在STM32定时器输入捕获中,消除PWM信号抖动导致的误触发,核心思路是结合硬件滤波和软件去抖。首先,利用定时器的输入滤波器(如TIMx_CR1的CKD位和TIMx_CCMRx的ICxF位)设置合适的滤波采样频率,例如对高频噪声,将ICxF设为0b1001(采样8次)或更高,滤除窄脉冲。其次,在捕获中断中增加软件判断,比较相邻两次捕获的边沿间隔(即周期),若周期小于最小有效PWM周期(如1ms),则视为抖动并丢弃该次捕获,同时复位捕获状态。实操建议:优先使用硬件滤波,因为它不占用CPU;软件去抖需注意中断响应时间,避免在中断中做复杂运算。另外,若信号源本身有毛刺,可在硬件上加RC低通滤波器(截止频率设为PWM频率的10倍以上),从源头抑制。最后,确保定时器时钟配置正确,避免采样频率过高导致滤波失效。
mcuku 阿沐 · 2026-08-27