核心思路是让DMA始终有数据可发,避免因中断延迟导致FIFO/寄存器空窗。实操建议:1)使用DMA循环模式(Circular Mode),配合双缓冲(Double Buffer)或环形缓冲区,提前填充下一组占空比数据;2)将DMA中断优先级设为最高(NVIC分组后抢占优先级最高),并在中断服务函数中仅做标志位更新或快速重载,避免耗时操作;3)若频率变化不频繁,可改用定时器更新事件触发DMA,且将PWM模式设为定时器比较输出(如TIMx_CHx),利用硬件自动更新。4)若仍丢中断,可考虑用定时器级联或使用硬件PWM发生器(如高级定时器互补输出),减少软件干预。最后,用逻辑分析仪验证波形,确保无毛刺。
mcuku 阿沐 · 2026-08-27