正点原子 STM32F7 HAL库教程实验九——输入捕获实验一章,用输入捕获测量高电平的长度,输入捕获中断回调函数 HAL_TIM_IC_CaptureCallback 和更新中断回调函数 HAL_TIM_PeriodElapsedCallback 的逻辑让人费解,而且原子有的注释不是很准确。现分析如下,以备遗忘。
1.输入捕获原理
用输入捕获测量一段高电平持续时间的原理如图,先设置上升沿触发中断,当捕获到上升沿时,让定时器重新计数,并设置下降沿触发中断。当下降沿到来时,记录下此时定时器的值CCRx2。在高电平期间,定时器可能有N次溢出,所以总共计数次数为 N ∗ A R R + C C R x 2 N*ARR+CCRx2 N∗ARR+CCRx2,再乘以一次计数的时间就得到高电平长度。
2.输入捕获中断回调函数
正点原子在输入捕获中断回调函数中用到了两个很重要的变量,如下,这里的注释和原子的不一样,我认为原子的注释写错了。
//捕获状态
//位[7]:0,没有捕获到一段高电平;1,捕获到一段高电平。
//位[6]:0,还没捕获到上升沿;1,已经捕获到上升沿。
//[5:0]:捕获到上升沿后,计数器溢出的次数
u8 TIM5CH1_CAPTURE_STA=