在STM32定时器输入捕获中,利用DMA突发模式可显著降低中断抖动。核心思路是:配置定时器的输入捕获通道(如TIMx_CH1)为上升沿触发,并启用DMA请求,将捕获寄存器(TIMx_CCR1)的值通过DMA连续搬运到内存缓冲区(如数组),同时设置DMA为循环模式。这样,每次捕获事件都会自动将CCR值存入缓冲区,无需CPU介入,从而避免中断响应延迟导致的抖动。实操建议:1)初始化DMA时,选择外设到内存方向,数据宽度为半字(16位),内存地址递增;2)设置DMA传输完成中断(半传输或全传输)来批量处理数据,计算频率时取缓冲区中相邻值的差值(需考虑定时器溢出,可配合更新事件中断或使用32位计数器模式);3)若需更高精度,可启用DMA的突发模式(Burst),一次请求传输多个数据,但需确保缓冲区大小与突发长度匹配。注意:DMA突发模式适用于高频率测量,但需合理配置定时器预分频和重载值,避免溢出。
mcuku 阿沐 · 2026-08-27