电子产业一站式赋能平台

PCB联盟网

搜索
查看: 73|回复: 0
收起左侧

STM32CubeMX之定时器产生PWM

[复制链接]

454

主题

454

帖子

2438

积分

三级会员

Rank: 3Rank: 3

积分
2438
发表于 2020-3-9 22:19:00 | 显示全部楼层 |阅读模式
本章介绍STM32定时器PWM模式的使用方法。STM32的定时器有多路PWM输出通道,可以配置多路同时输出不同占空比的PWM波。前期准备:
  •     STM32硬件电路板及仿真器(以STM32F072C8单片机为例)
  •     Keil v5以上版本(MDK-ARM)
    首先新建工程后,配置系统时钟为48MHz(具体步骤参考之前的文章)。配置TIM3的时钟为内部时钟,Channel1和Channel2两通道为PWM输出模式,配置完后可以看到相应的GPIO也会显示为TIM3_CH1和TIM3_CH2。TIM3基本定时参数的设置可参考上一篇文章STM32CubeMx之TIM定时中断。假设设置CH1的PWM频率为10kHZ,占空比为30%,CH2的频率为10kHz,占空比为40%,则设置参数如下图。

    mlu5ntycr1264048946136.jpg

    mlu5ntycr1264048946136.jpg

    PWM频率 = TIM分频后的频率 / 计数周期 = 48MHz / 4800=10kHz。PWM占空比 = Pluse / Counter Period。
    CH1和CH2可以单独设置。 PWM模式有mode1和mode2两种模式,其区别在于:
  • PWM mode1 计数值大于比较值,输出有效电平,否则输出无效电平。

  • PWM mode2 计数值大于比较值,输出无效电平,否则输出有效电平。

            其中有效电平即为CH Polarity所设置的电平。
    需要说明的是有的定时器的输出通道可以影视到不同的IO口上,用户可以自己选择,上图中选择TIM3的通道1和通道2后,默认的PB3和PB4端口被设置为TIM3_CH1和TIM3_CH2功能。实际上,TIM3的通道1和通道2也可以映射到PA6和PA7上,用户可以手动更改。

    o0ht1ubxlms64048946237.png

    o0ht1ubxlms64048946237.png


    设置完成后点击 Generate Code生成代码。可以看到TIM3的初始化已经自动生成,在后面添加PWM启动的代码即可,如下图。

    q0zaq3ypnbe64048946337.png

    q0zaq3ypnbe64048946337.png

    如果需要改变PWM的频率和占空比,调用以下函数。

    b1ryxfhl2hd64048946437.png

    b1ryxfhl2hd64048946437.png


    编译程序后,下载到电路板,用示波器观察相应引脚的波形。

    vkbxlndbkuq64048946537.png

    vkbxlndbkuq64048946537.png

    可以看到频率是10.080kHz(由于使用的内部RC时钟,有一定误差),占空比39.999%,说明程序没有问题。
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表