核心思路是让DMA传输与PWM更新事件严格同步,避免在更新事件发生时DMA正在改写寄存器。具体做法:1)将DMA配置为循环模式,并设置DMA传输完成中断,但中断服务函数中仅更新内存缓冲区指针,不直接操作PWM寄存器;2)利用PWM的更新事件触发DMA传输(通过TIMx_DMA请求),确保DMA在更新事件后立即装载新数据,且DMA传输优先级高于CPU中断;3)若使用多路PWM,建议将DMA通道优先级设为最高,并关闭PWM更新中断(仅用DMA中断),减少竞争窗口;4)在硬件上,可增加一个小的死区时间(如1-2个时钟周期)在更新事件后延迟DMA启动,避免边沿冲突。实操时,先用逻辑分析仪验证波形,微调DMA突发长度和FIFO阈值。
mcuku 阿沐 · 2026-08-27