STM32输入捕获功能

输入捕获功能
1、ICx通道映射到对应的TIx通道。通过控制CCMR1寄存器的CC1S[1:0]值进行选择。
2、配置滤波器。根据信号抖动时间配置滤波器。滤波器的配置是通过CCMR1的ICxF[3:0]进行设置。
3、选择有效边缘。通过设置CCER的CC1P的位的值。
4、配置输入预分频。通过设置CCMR1的ICPS[1:0],设置分频。
5、输入捕获使能。通过设置CCER的CC1E位进行使能。
6、设置中断使能。如果产生更新中断,则设置TIMX_DIER的UIE位
如果需要产生输入捕获中断,则要设置TIMX_DIER的CC1IE位
定时器各通道对应的IO

如要捕获按键按下的时间(按下时高电平):
1、初始化时捕获的边沿检测设为上升沿捕获。
2、产生第一个捕获中断时,定时器是的值设为0,捕获的边沿检测设为下降沿捕获。
3、产生第二次捕获中断时,读取CCR的值(捕获中断时,定时器的值会传入到CCR中)
4、通过读取到的CCR的值,就可以得知输入高电平的时间。

这里需要用到的几个函数:
uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx):获取CCR1的值
void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter):设置定时器的值

你可能感兴趣的:(STM32学习笔记)