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

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

你可能感兴趣的:(stm32)