用定时器输入捕获做红外线接收实验。(此次试验以通道2为例)
①stm32cube配置
②
③
④程序中主要用到的输入捕获相关寄存器
uint16_t tim_sr,tim_ccer,tim_ccr;
tim_sr=htim->Instance->SR;//状态寄存器
tim_ccer=htim->Instance->CCER;//捕获、比较使能寄存器
tim_ccr=htim->Instance->CCR2;//捕获比较寄存器2(即用来保存通道2发生中断时的CNT寄存器的值)
htim->Instance->CNT //计数寄存器
SR用来判断是不是输入捕获中断;
CCER寄存器用来判断当前是下降沿捕获中断还是上升沿捕获中断,同时也能随时改变上升沿捕获还是下降沿捕获;
CCR2寄存器表示当前中断发生时的CNT寄存器的值,也就是用来判断时间的;(读取CCR2的值,可以清楚SR寄存器中的CC2IF标志位)
CNT是用来计数的,每个定时器时钟周期自动+1,我们可以再需要的时间将其清零,便于计时。