STM32Cubemx配置定时器PWM

首先要知道定时器的原理,我用的是通用定时器,简单说一下,就是把握两个寄存器的值,自动重载寄存器ARR和比较寄存器CCR,ARR决定PWM方波的频率,CCR决定占空比,方波什么时候翻转。要是原理一点不懂,建议先看看课。

Cubemx配置

首先根据自己选用的芯片手册,看定时器挂载在哪个总线下,我使用的是正点原子mini板,选择通用定时器,可以看到通用定时器都挂载在APB1总线下

打开cubMX,选择芯片

先配置RCC,选择外部高速时钟源

配置时钟树为最大频率

配置TIM3,根据实际需求配置,我需要50Hz,占空比5.5%或者9.5%,首先选择TIM3的时钟源,这个Internal Clock就是APB1总线,因为我就需要一路pwm,所以只配置一路为PWM输出模式,具体选择哪个通道根据自己需求即可,不同的通道IO引脚不一样

下面说频率,前面说过通用定时器都挂载在APB1总线上,看时钟树可知总线频率为72MHz

我需要频率为50Hz ,PRescaler和Counter Period两个数值决定了频率,这两个数值根据需要自己选择,没有固定值,只要能凑出你需要的频率即可

公式:APB1频率/Prescaler/Counter Period=所需频率

也就是 72Mhz/7200/200=50

频率完成,接下来就是占空比,占空比由Pulse决定,公式:占空比=Pulse/Counter Period

我需要占空比为5.5%,9.5%,Pulse就是200*5.5%=11和19,根据自己的需求在pulse位置太难如所需的占空比,即可。我这里选择零,不板子一上电就输出方波。

 选择MDK

分文件编程

点击generate code生成代码即可

最后一步,在工程文件下,打开keil工程,在main.c里添加打开PWM的代码,选择好定时器和通道就能输出所需的方波了。

如果需要改占空比,则需要用到_HAL_TIM_SET_COMPARE这个函数

我这里做了额外的处理,在接收到串口的消息以后,根据消息不同,输出不同的占空比,需要用到串口,可以看zigbee那块的笔记。

只需要在main.c 调用中断回调函数即可,代码如下

连接示波器,就能看到现象

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值