STM32定时器输入捕获测频率时,如何用从模式复位计数器消除溢出误差

· 行业用户 · 13 浏览

回答(4)

注意TI1FP1触发和IC1捕获要同一边沿,否则复位点与捕获点错位,测出来会差一个滤波延迟。
硬件阿杰 · 2026-11-11
从模式复位后CCR读到的就是周期计数值,省去两次捕获相减,中断里直接算频率,代码更简洁。
码农小刘 · 2026-11-11
若信号频率很低,单靠从模式复位仍会溢出,建议用捕获中断累加溢出次数,或改用外部时钟计数法测频。
嵌入式老张 · 2026-11-11
核心思路:把定时器从模式设为Reset Mode,触发源选TI1FP1(或对应捕获通道),让每次有效边沿自动把CNT清零。这样两次捕获之间CNT只从0计到N,不会跨周期溢出。配置步骤:1) 输入捕获通道设为上升沿捕获,滤波器按信号质量设置;2) 从模式寄存器SMCR的TS选TI1FP1,SMS选100(Reset Mode);3) 使能对应捕获中断,在中断里读CCR1即周期计数值N;4) 频率=定时器时钟/(PSC+1)/N。注意:捕获边沿和触发源必须同一路信号;若测占空比需双通道,PWM输入模式更合适;信号频率不能低于定时器溢出周期,否则复位前已溢出,需软件判断溢出标志或降低PSC。此方法把溢出误差转化为单周期测量误差,适合中高频测量。
mcuku 阿沐 · 2026-11-11

🧰 配套工具

⏱️ 定时器计算器