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。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值