FTM脉冲输入捕获

1、宏定义

#define INCAP_INSTANCE               FTM1            //端口号
#define INCAP_CHANNEL0              kFTM_Chnl_0     //通道号
#define INCAP_CHANNEL1              kFTM_Chnl_1     //通道号
#define INCAP_PORT                  PORTA           //引脚端口号
#define INCAP_PIN1                  8U              //引脚号
#define INCAP_PIN2                  9U              //引脚号
#define INCAP_AF                    kPORT_MuxAlt3   //复用为输入捕获
#define INCAP_CLKSOURCE             kCLOCK_PortA    //端口时钟
#define INCAP_IRQ                   FTM1_IRQn       //中断向量号
#define INCAP_INTERRUPT_HANDLE      FTM1_IRQHandler //中断服务函数
#define INCAP_CHANNEL_FLAG          kFTM_Chnl0Flag  //中断通道标志

2、输入捕获初始化

void BMQ_INPUTCAP(void)
{ftm_config_t INCAPconfig;//初始化结构体句柄CLOCK_EnableClock(INCAP_CLKSOURCE);//引脚时钟初始化PORT_SetPinMux(INCAP_PORT,INCAP_PIN1,INCAP_AF);//端口复用为输入捕获模式PORT_SetPinMux(INCAP_PORT,INCAP_PIN2,INCAP_AF);//端口复用为输入捕获模式FTM_GetDefaultConfig(&INCAPconfig);//初始化配置FTM_Init(INCAP_INSTANCE,&INCAPconfig);//初始化FTM_SetupInputCapture(INCAP_INSTANCE,INCAP_CHANNEL0,kFTM_RisingEdge,0);//配置输入捕获为上升沿捕获,滤波选择不滤波,则最后参数为0   FTM_SetupInputCapture(INCAP_INSTANCE,INCAP_CHANNEL1,kFTM_RisingEdge,0);//配置输入捕获为上升沿捕获   INCAP_INSTANCE->MOD = 0xffff;//空闲运行模式FTM_EnableInterrupts(INCAP_INSTANCE,kFTM_Chnl0InterruptEnable); //选择中断通道为通道0EnableIRQ(INCAP_IRQ);//使能中断FTM_StartTimer(INCAP_INSTANCE, kFTM_SystemClock);//开启定时器,配置时钟源为系统时钟
}

定义一个全局变量

uint32_t count = 0;

输入捕获采用中断采集,每次采集到一个上升沿,进入一次中断,count值自加1

void INCAP_INTERRUPT_HANDLE(void)
{if((INCAP_INSTANCE->STATUS & 0x01)==1){       count++;FTM_ClearStatusFlags(INCAP_INSTANCE,INCAP_CHANNEL_FLAG);//清除通道的标志位    }
}

最后,每次10ms打印一次再清零,就可以知道10ms采集了多少个脉冲了

         PRINTF("%d\n",count); count = 0;DELAY_MS(10);

个人心得:这个输入捕获的捕获值不用通过读取CnV寄存器来获取,两个方法的效果是一样的。

用SDK包开发K66FX18学习笔记(4)相关推荐

  1. 用SDK包开发K66FX18学习笔记(1)

    任何单片机,从点灯开始(GPIO输出) 1.LED初始化(fsl_gpio.h) void LED_INIT(void) {gpio_pin_config_t LEDconfig;//GPIO初始化句 ...

  2. 用SDK包开发K66FX18学习笔记(5)

    ADC采集(光敏电阻) 1.宏定义 #define ADC0_INSTANCE ADC0 #define ADC1_GPIO GPIOA #define ADC1_PORT PORTA #define ...

  3. 用SDK包开发K66FX18学习笔记(2)

    PIT定时器(更新中断) 1.宏定义 #define PIT_CHANNAL kPIT_Chnl_0 //通道0 #define PIT_DELAY 500000 //500MS #define PI ...

  4. 用SDK包开发K66FX18学习笔记(3)

    FTM输出PWM 1.宏定义 #define FTM_INSTANCE FTM2 //FTM端口 #define FTM_CHANNAL0 0U //FTM通道 #define FTM_CHANNAL ...

  5. iTOP-RK3568开发板学习笔记(1)编译+烧录系统

    迅为 RK3568 开发板学习笔记 文章目录 准备开发环境 复制 Linux SDK 编译 Buildroot 烧录固件 准备开发环境 将 ITOP-RK3568 资料包中的虚拟机开发环境解压到自己的 ...

  6. 多人网络游戏服务器开发基础学习笔记 II: 帧同步 | 游戏客户端预测原理分析 | FPS 游戏状态同步

    这篇是对书本 网络多人游戏架构与编程 的学习第二篇(第一篇:多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | ...

  7. “物联网开发实战”学习笔记-(四)智能音箱制作和语音控制

    "物联网开发实战"学习笔记-(四)智能音箱制作和语音控制 这次来造一个属于自己的智能音箱,这里详细介绍了智能音箱的语音控制的实现. 智能音箱的技术架构 智能音箱主要涉及拾音.前端信 ...

  8. 涂鸦LZ201-CN开发板学习笔记(一)

    涂鸦LZ201-CN开发板学习笔记(一) 前言 一.引出 二.准备流程 1.购买开发板 2.创建产品 (1)创建产品 (2)功能定义 (3)设备交互 (4)硬件开发 3.检查开发板 第一步: 第二步: ...

  9. “物联网开发实战”学习笔记-(二)手机控制智能电灯

    "物联网开发实战"学习笔记-(二)手机控制智能电灯 如果搭建好硬件平台后,这一次我们的任务主要是调试好智能电灯,并且连接到腾讯云的物联网平台. 腾讯云物联网平台 腾讯物联网平台的优 ...

最新文章

  1. 活动目录管理之五种常见错误操作
  2. 左外连接的sql语句_Django数据库连接和使用原生sql语句
  3. python 字典添加元素
  4. 开箱即用的微服务框架 Go-zero(进阶篇)
  5. C语言 位段(位域)总结
  6. 如何找到适合结婚的女朋友
  7. Spring+SpringMVC+MyBatis+easyUI整合优化篇(十三)数据层优化-表规范、索引优化
  8. JSP中9个隐含对象
  9. Kotlin详尽语法分析(未完待续)
  10. resnet101网络结构
  11. 新东方的全套英语资料,相当权威版!!!
  12. win10计算机加域步骤,Windows域是什么|win10系统加入域的详细步骤
  13. PR——轨道遮罩-玻璃滑动效果
  14. android 主流分辨率是多少,Android程序开发设计主流屏幕分辨率介绍
  15. MySQL计算天数差
  16. 君望永远--纠缠在爱情的起点上 (转载)
  17. 计算机组成知识教案,计算机系统的基本组成 教案_
  18. diffuse、specular贴图的光照
  19. 2020牛客暑期多校训练营(第九场) The Flee Plan of Groundhog
  20. C#操作Excel之复制一行并插入下方(确保插入的新行与上一行格式相同)

热门文章

  1. Java——继承的概念
  2. iOS开发--APP性能检测方案汇总(一)
  3. c# opengl tao
  4. 3元特卖好课AngularJs基础视频教程 大漠穷秋AngularJs基础教程 AngularJs入门教程
  5. 【BZOJ4027】【HEOI2015】兔子与樱花 贪心
  6. 【JAVA】滴滴-2021校招在线笔试-DE数据开发试卷-0913
  7. 数字孪生城市,智慧城市可视化技术解决方案案例
  8. 重新思考人体姿态估计 Rethinking Human Pose Estimation
  9. appium通过定位坐标进行定位(兼容模式)
  10. 全渠道客户体验是什么?如何创建全渠道营销平台?