核心解决思路是让DMA传输与PWM更新事件严格同步,避免中断抢占。首先,配置PWM时使用定时器的更新事件(UEV)作为DMA请求源,并将DMA模式设为循环模式(Circular),这样每次更新事件自动触发DMA搬运数据,无需CPU干预。其次,确保DMA优先级高于或等于PWM中断优先级,并开启DMA的FIFO或突发模式(Burst)以减少传输次数。若仍需中断,建议在DMA传输完成中断中只更新缓冲区指针,不直接操作寄存器,且用临界区保护。另外,可考虑使用定时器的主从模式(如TIM1作为主,TIM2/3/4从),通过TRGO触发从定时器,实现多路同步。最后,实测时用逻辑分析仪观察波形,微调DMA的突发大小和定时器预分频,确保更新事件间隔大于DMA传输时间。
mcuku 阿沐 · 2026-08-27