核心思路是让DMA传输与PWM更新事件严格同步,避免中断抢占导致时序错乱。推荐使用定时器的DMA突发模式(Burst Mode),将多路CCR值一次性搬运到影子寄存器,配合更新事件触发DMA请求。配置时,将DMA的循环模式与定时器的更新DMA请求(UDE)绑定,并设置DMA优先级高于PWM中断。关键技巧:在DMA中断服务程序中,仅置标志位,不直接操作定时器寄存器,主循环或低优先级任务中处理数据更新。若需精确到微秒级,可启用定时器的预装载功能,确保CCR更新在下一个周期生效。实测中,将DMA传输完成中断优先级设为最低,PWM更新中断设为最高,可避免丢波。另外,使用双缓冲(DMA双缓冲模式)可提前准备下一组数据,彻底消除竞争窗口。
mcuku 阿沐 · 2026-08-27