关于STM32 PWM计算问题

至于STM32的PWM的基本知识,博客 STM32——PWM基本知识及配置过程已经说的非常清楚了,这里再说明一下PWM的频率和占空比计算

  • 首先要搞清楚单片机的时钟树,搞清楚TIM的时钟来源以及具体时钟频率,这里以TIM2CH4为例,假设时钟来源为内部时钟HSI,最终到APB1的时钟为8M,TIM2的时钟也为8M

  • 其次,搞明白PWM的计算公式,PWM的周期由ARR决定,定时器的计数器跑完一个(ARR+1)即为一个PWM周期,而计数器的计数单位时间为(PSC+1)/8M

在这里插入图片描述

  • 计算,假设PWM周期设置为20ms即50Hz,20ms = (ARR+1)*[(PSC+1)/8M],假设PSC=7,则计数器计数单位为1us,再将ARR+1设置为20 000,1us*20 000=20ms即设置PWM周期20ms

  • PWM的占空比与CCRx和ARR寄存器有关,ARR决定CCRx的最大值,CCRx使用TIM_SetComparex设置

  • 备注

    在实际操作中,因为单片机焊接了外部晶振8M,以为定时器的APB1时钟频率为72M,再怎么计算修改寄存器值,输出的PWM都不对,后来才发现单片机默认使用的是内部时钟源!

  • 代码实例

    void TIM2_PWM_Init()
    {
           
    
  • 7
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值