核心思路是让DMA传输与PWM更新事件严格同步,避免在更新事件发生时DMA正在写入寄存器。推荐使用定时器的DMA突发模式(Burst Mode),将DMA请求绑定到更新事件(UEV),并配置为循环模式,这样每次更新事件触发DMA搬运下一组数据,硬件保证时序一致。同时,确保DMA传输完成中断(TC)只用于软件层的数据准备,而非实时控制。实操建议:1)在初始化时,先配置PWM输出,再使能DMA,最后启动定时器;2)使用双缓冲(Double Buffer)或环形缓冲区,让DMA在后台预取数据,避免CPU干预;3)若需多路精确波形,可考虑使用定时器通道的互补输出或使用高级定时器的重复计数功能,减少中断频率。若竞争仍存在,可增加DMA优先级高于PWM更新中断,但更推荐硬件同步方案。
mcuku 阿沐 · 2026-08-27