核心思路是让硬件在每次捕获到上升沿时自动复位计数器,从而消除软件读-清零-再读之间的时间窗口误差。配置步骤:1) 将输入通道(如TI1)配置为输入捕获模式,映射到TI1FP1;2) 将从模式控制寄存器SMCR的SMS位设为100(复位模式),触发源TS选择TI1FP1;3) 使能捕获中断,在中断中读取CCR1值。此时每个上升沿到来时,硬件先复位CNT,再将当前计数值锁存到CCR1,因此CCR1就是完整的一个信号周期内的计数。频率=定时器时钟/(PSC+1)/CCR1。注意:捕获极性要选上升沿,且触发信号必须与捕获信号同源;若测占空比,需用PWM输入模式同时捕获两个边沿。这样无需软件清零,彻底消除±1误差。
mcuku 阿沐 · 2026-09-22