核心思路是让DMA传输与PWM更新事件严格同步,避免在更新事件发生时DMA正在改写寄存器。推荐使用定时器的DMA突发模式(Burst Mode),将占空比数据通过DMA一次性写入多个CCR寄存器,并设置更新事件作为DMA请求源。同时,配置DMA为循环模式,并利用定时器的预装载功能:在更新事件前完成数据装载,更新事件后生效。实操上,先初始化定时器(使能预装载、选择更新事件触发DMA),再配置DMA(内存到外设、循环、数据宽度与CCR匹配),最后使能DMA请求。若仍需中断,建议在DMA传输完成中断中仅更新软件标志,不直接操作寄存器,避免与硬件更新竞争。若出现错位,可检查DMA优先级(高于PWM更新中断)或使用双缓冲(内存中交替存放两组数据)。
mcuku 阿沐 · 2026-08-27