用SDK包开发K66FX18学习笔记(4)
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)相关推荐
- 用SDK包开发K66FX18学习笔记(1)
任何单片机,从点灯开始(GPIO输出) 1.LED初始化(fsl_gpio.h) void LED_INIT(void) {gpio_pin_config_t LEDconfig;//GPIO初始化句 ...
- 用SDK包开发K66FX18学习笔记(5)
ADC采集(光敏电阻) 1.宏定义 #define ADC0_INSTANCE ADC0 #define ADC1_GPIO GPIOA #define ADC1_PORT PORTA #define ...
- 用SDK包开发K66FX18学习笔记(2)
PIT定时器(更新中断) 1.宏定义 #define PIT_CHANNAL kPIT_Chnl_0 //通道0 #define PIT_DELAY 500000 //500MS #define PI ...
- 用SDK包开发K66FX18学习笔记(3)
FTM输出PWM 1.宏定义 #define FTM_INSTANCE FTM2 //FTM端口 #define FTM_CHANNAL0 0U //FTM通道 #define FTM_CHANNAL ...
- iTOP-RK3568开发板学习笔记(1)编译+烧录系统
迅为 RK3568 开发板学习笔记 文章目录 准备开发环境 复制 Linux SDK 编译 Buildroot 烧录固件 准备开发环境 将 ITOP-RK3568 资料包中的虚拟机开发环境解压到自己的 ...
- 多人网络游戏服务器开发基础学习笔记 II: 帧同步 | 游戏客户端预测原理分析 | FPS 游戏状态同步
这篇是对书本 网络多人游戏架构与编程 的学习第二篇(第一篇:多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | ...
- “物联网开发实战”学习笔记-(四)智能音箱制作和语音控制
"物联网开发实战"学习笔记-(四)智能音箱制作和语音控制 这次来造一个属于自己的智能音箱,这里详细介绍了智能音箱的语音控制的实现. 智能音箱的技术架构 智能音箱主要涉及拾音.前端信 ...
- 涂鸦LZ201-CN开发板学习笔记(一)
涂鸦LZ201-CN开发板学习笔记(一) 前言 一.引出 二.准备流程 1.购买开发板 2.创建产品 (1)创建产品 (2)功能定义 (3)设备交互 (4)硬件开发 3.检查开发板 第一步: 第二步: ...
- “物联网开发实战”学习笔记-(二)手机控制智能电灯
"物联网开发实战"学习笔记-(二)手机控制智能电灯 如果搭建好硬件平台后,这一次我们的任务主要是调试好智能电灯,并且连接到腾讯云的物联网平台. 腾讯云物联网平台 腾讯物联网平台的优 ...
最新文章
- 活动目录管理之五种常见错误操作
- 左外连接的sql语句_Django数据库连接和使用原生sql语句
- python 字典添加元素
- 开箱即用的微服务框架 Go-zero(进阶篇)
- C语言 位段(位域)总结
- 如何找到适合结婚的女朋友
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(十三)数据层优化-表规范、索引优化
- JSP中9个隐含对象
- Kotlin详尽语法分析(未完待续)
- resnet101网络结构
- 新东方的全套英语资料,相当权威版!!!
- win10计算机加域步骤,Windows域是什么|win10系统加入域的详细步骤
- PR——轨道遮罩-玻璃滑动效果
- android 主流分辨率是多少,Android程序开发设计主流屏幕分辨率介绍
- MySQL计算天数差
- 君望永远--纠缠在爱情的起点上 (转载)
- 计算机组成知识教案,计算机系统的基本组成 教案_
- diffuse、specular贴图的光照
- 2020牛客暑期多校训练营(第九场) 	The Flee Plan of Groundhog
- C#操作Excel之复制一行并插入下方(确保插入的新行与上一行格式相同)