解决DMA中断与PWM更新事件竞争的关键在于同步时序和优先级管理。首先,确保DMA传输完成中断(TC)和PWM更新中断(UEV)的优先级设置合理,建议将UEV设为最高优先级(如抢占优先级0),DMA中断设为次高(如1),避免DMA中断打断PWM更新。其次,使用定时器的DMA突发模式(Burst Mode),通过配置DMAR寄存器,让DMA在单个更新事件中连续传输多个数据,减少中断频率。若必须使用中断,可在DMA中断服务程序中先关闭PWM更新中断,更新DMA缓冲区后再恢复,但需注意关闭时间极短(微秒级),避免波形失真。更稳妥的方案是采用双缓冲(Ping-Pong)机制,利用DMA的循环模式,在后台预加载下一组数据,前台输出当前数据,彻底消除竞争。实操时,建议用逻辑分析仪抓取波形,调整DMA传输大小和定时器周期,确保DMA传输在PWM更新事件前完成。
mcuku 阿沐 · 2026-08-27