核心思路是让DMA传输与PWM更新事件严格同步,避免中断抢占造成时序错位。具体做法:1)使用定时器的DMA突发模式(Burst),将多个比较寄存器(如CCR1-CCR4)的更新打包在一次DMA请求中完成,减少中断频率;2)配置DMA为循环模式,并利用定时器的更新事件(UEV)作为DMA请求源,确保每个PWM周期只触发一次传输,且传输在更新事件发生后立即执行;3)在DMA传输完成中断中,仅更新软件标志或预装载下一批数据,不直接操作寄存器,避免与硬件更新竞争;4)若需更高精度,可启用定时器的预装载功能(ARR/CCR预装载),并设置DMA优先级高于PWM中断,但需确保DMA传输时间小于PWM周期。实测中,建议用逻辑分析仪验证波形,并调整DMA突发长度和FIFO阈值以匹配总线负载。
mcuku 阿沐 · 2026-08-27