tmr dma

看了tmr的例程,有个dma pwm例子,会发送数组,循环发送,这个数组对于pwm代表什么?占空比?还是什么?比如例子中周期为TMR2_PWMCycleCfg(120000); // 周期 2000us,数组如图,比如我想发送占空比25%和45%的发送什么数据?。第二例子中有个计满1000周期进入中断?这个有点不明白?多写了0?还是?第三我设置单次模式如何再次开启dma pwm传输?1720565412058.png

DMA数组中的数值用来表示低/高电平的周期数,高/低电平根据TMR2_PWMInit接口的第一个参数来判断。

25%的高电平占比,可以配置(25% * TMR2_PWMCycleCfg接口周期总数)个周期,放在PwmBuf数组中,TMR2_PWMInit配置第一个参数为High_Level


图中“计满1000周期进入中断”注释可以删去,该注释不适用图中的代码块。


再次开启TMR PWM输出一组周期,再调用一次TMR2_DMACfg即可。


还有一个问题,我尝试输出脉冲,但发现第一个脉冲被输出了两次,什么原因?如图第一个0.2ms被输出了2次然后第三个脉冲是20us

1720620542413.png

1720620556444.png

1720620586787.png


经过测试例程也会出现,由于例子中数组第一位为0,所以直接观察不到,但如果 PwmBuf[i]=2400*i+2400;将数组第一个变为非零,就会观察到第一个脉冲出现了重复,


W10RCVKFDC5KXN`EIS0GB5L.png


如下图

~[_KMC]NMY33QRUD}1]1P%P.png


您好,可以先配置init再配置dmacfg,这样试试看。

image.png


只有登录才能回复,可以选择微信账号登录