当前位置:首页 > 文化百科

pwm占空比计算公式(pwm波的频率如何控制占空比和周期关系)

2022-11-14 16:20:02

  本章介绍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%,则设置参数如下图。

  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上,用户可以手动更改。

  设置完成后点击Generate Code生成代码。

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

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

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

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

免责声明:本文由用户上传,如有侵权请联系删除!