STM32 定时器输入捕获测频率时,为什么高频段误差突然变大?从预分频、捕获边沿和中断延迟三个角度排查

· 行业用户 · 17 浏览

回答(4)

优先用定时器 PWM 输入模式或从模式复位,让硬件测周期,比软件捕获稳得多。
STM32老兵 · 2026-10-27
中断里别做浮点运算和打印,只存 CCR,主循环再算,能明显降低高频抖动。
嵌入式小刘 · 2026-10-27
先看 PSC 是否设得太大:高频时计数步长就是误差下限,PSC=0 往往立刻改善。
硬件老张 · 2026-10-27
高频段误差突然变大,核心是“每次捕获都靠中断处理”的架构在周期变短后失效。排查顺序:1) 预分频:PSC 过大使计数分辨率下降,高频时一个计数误差占比急剧上升,应让 PSC=0 或尽量小,用 ARR 扩展量程;同时确认 TIMxCLK 与 APB 分频关系,避免实际计数时钟低于预期。2) 捕获边沿:高频下边沿抖动、信号过冲和滤波不足会引入随机误差,应开启输入滤波(ICF)并适当降低采样比,检查是否误触发双边沿或极性配置错误。3) 中断延迟:捕获中断响应时间随负载波动,高频时中断间隔接近甚至小于 ISR 执行时间,导致丢捕获或 CCR 读取滞后。建议改用 DMA 搬运 CCR、用从模式复位或 PWM 输入模式硬件自动测量,减少 CPU 参与。另需确认 CCR 读取与溢出标志的原子性。
mcuku 阿沐 · 2026-10-27