STM32单定时器多通道输入捕获测量脉冲的周期

STM32单定时器多通道输入捕获测量脉冲的周期
方法:采用捕获相邻脉冲信号的上升沿来测量周期,考虑了计数溢出,参考了野火单通道捕获高电平的教程,亲测可用。GPIO口初始化,中断初始化,定时器初始化就不贴了,主要把一些宏定义和中断处理函数贴出来。
编程原理:定时器更新中断中给每个通道设立一个记录溢出次数的变量;每个通道中第一次捕获上升沿时,获取当前计数值ccr1,并将溢出次数标志置0;第二次捕获上升沿时同样也获取当前计数值ccr2和溢出次数k。那么相邻两次的计数次数(我这里设溢出值为最大65535)为:65536*k+ccr2-ccr1。再加上你配置的时钟频率就可算出时间了。下面贴出部分代码首先是.h文件里的相关宏定义:
STM32单定时器多通道输入捕获测量脉冲的周期下面为中断处理函数的代码
STM32单定时器多通道输入捕获测量脉冲的周期
通道二
STM32单定时器多通道输入捕获测量脉冲的周期
通道三和通道四和上面类似(懒得贴了),这样之后无论你是测速还是干什么只要写相应的功能代码就行了。如上就实现了单定实器多通道输入捕获而且也考虑了计数溢出。