STM32定时器输入捕获测频时,如何用从模式+复位触发实现无需中断的自动周期测量?

· 5 浏览

回答(4)

注意:从模式复位会占用触发输入,若同时用其他通道捕获,需确认触发源选择不会冲突。
硬件攻城狮 · 2026-10-09
实测建议:TI1滤波设8~15,采样分频选2~4,能有效抑制毛刺,避免误复位。
STM32小王子 · 2026-10-09
补充:若信号频率很低,CCR1会溢出,可改用从模式门控或配合溢出中断计数,但那就不是纯无中断了。
嵌入式老李 · 2026-10-09
核心思路:把定时器配置为从模式复位(Slave Mode Reset),触发源选TI1FP1(或对应通道的滤波后信号)。将输入捕获通道1设为上升沿捕获并开启滤波,同时把TI1FP1映射为触发输入(TS=101)。这样每个信号上升沿都会自动把CNT清零,而CCR1在下一个上升沿到来前锁存的是上一个完整周期的计数值。测量时只需在任意时刻读CCR1,即可得到周期(单位:计数时钟周期)。若需要连续自动更新,可再开启CCR1的DMA请求,让每个周期结束自动把CCR1搬到内存数组,全程无需CPU中断。注意:CNT时钟频率决定分辨率,建议用较高时钟(如72MHz或定时器最高时钟),并合理设置预分频使CCR1不溢出。信号频率不能超过定时器时钟/2,否则复位会丢失。此方法适合中高频(几Hz到几十MHz)稳定测量。
mcuku 阿沐 · 2026-10-09

🧰 配套工具

⏱️ 定时器计算器