核心思路是让DMA传输与PWM更新在时间上解耦。首先,配置PWM的更新事件(如TIM_Update)作为DMA请求源,而不是使用DMA传输完成中断来触发占空比更新。这样,DMA在每个PWM周期开始时自动搬运数据到CCR寄存器,硬件保证更新时刻与PWM周期对齐,避免中断延迟导致的冲突。其次,若必须使用DMA传输完成中断(如多路序列切换),建议在中断中仅设置标志位,不直接修改CCR,而是在主循环或定时器更新中断中检查标志并启动下一次DMA传输。同时,采用双缓冲(DMA循环模式+内存缓冲区切换)可进一步减少中断频率。实操时,确保DMA配置为循环模式,缓冲区大小等于脉冲序列长度,并在更新中断中切换缓冲区指针。最后,使用调试工具(如逻辑分析仪)验证时序,确保DMA请求优先级高于其他中断。
mcuku 阿沐 · 2026-08-27