MSPM0系列快速入门指南(第5篇:PWM模块速成)
我们首先使用syscfg定制初始化函数,打开Timer-PWM。这里我们从名字上就可以看出输出PWM波信号就是通过定时器来输出的。
首先我们来设置定时器:
图5.1
这里主要调整的参数是Timer Clock Prescale用于改变定时器的频率。这里我们的频率是125000Hz。
图5.2
设置通道0:因为我目前需要调整舵机,它需要一个20ms的时基脉冲,高电平时间在0.5ms~2.5ms来控制旋转角度。所以这里PWM Period Count为2500,这时候PWM脉冲频率为50Hz,周期为20ms,可以发现PWM Period Count乘以Calculated PWM Frequency就是图5.1的定时器频率125000Hz。由于START TIME这一列没有勾选,所以我们在主程序里必须用DL_TimerG_startCounter(your_PWM_name_INST);语句来开启PWM通道。
注意:如果小伙伴们观察仔细的话,会发现这里Counter Compare Value和我们设置的占空比是绑定的。Counter Compare Value也就是低电平所占用的定时器记最小周期次数。(这部分会在文章最后提到)
Counter Compare Value=定时器频率*(1-占空比)
图5.3
最后设置PWM波输出引脚即可,这里我使用了2个通道,通道0使用的PA12引脚,通道1使用的PA13引脚。
注:不同通道可设置的占空比不同,但频率相同。
主函数如下:
图5.4
一般我们在做项目的时候,很少会遇见占空比保持不变的情况,那么我们如何在主程序中调整PWM的占空比呢?
使用如下函数进行修改。
DL_TimerG_setCaptureCompareValue(PWM_motor_INST, 2187, DL_TIMER_CC_0_INDEX);
这里2187就是上面红字部分提到的Counter Compare Value。
作者:2301_76821128