🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都已更新完毕,欢迎大家前往订阅本专题🎏
🎏【蓝桥杯嵌入式】蓝桥杯第十届省赛真题
🎏【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题
🎏【蓝桥杯嵌入式】蓝桥杯第十三届省赛程序真题
🪔本系列专栏 - 蓝桥杯嵌入式_勾栏听曲_0的博客
🍻欢迎大家 🏹 点赞👍 评论📨 收藏⭐️
📌个人主页 - 勾栏听曲_0的博客📝
🔑希望本文能对你有所帮助,如有不足请指正,共同进步吧🏆
🎇书咄咄,且休休,一丘一壑也风流。📈
目录
什么是PWM
输出比较模式
PWM模式
区别与联系
PWM示波器上的效果
本篇文章是在使用示波器时,无法输出正常的PWM占空比的波形而写的,其原因就是输出比较模式与PWM模式所导致的。
什么是PWM
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
PWM是定时器扩展出来的一个功能,本质上是使用一个比较计数器的功能。
STM32没有专门的PWM引脚,所以使用IO口的复用模式。
配置过程一般为选定定时器、复用GPIO口、选择通道(传入比较值)、使能相应系统时钟、设定相应的预分频、计数周期、PWM模式(有两种)、电平极性等。
在STM32中,定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出。而通用定时器也能同时产生多达4路的PWM输出,这样,STM32最多可以同时产生30路PWM输出。
ARR寄存器是用来配置计数器溢出周期(也就是计数器计数最大值,比如定时器使用时周期),也就是定时器定时周期或者作为pwm输出时的周期/频率,而TIMx_CCR捕获比较寄存器则是在作输出时作为计数器响应值,也就是pwm时改变占空比(波形)时使用的。
输出比较模式
STM32定时器输出比较模式是STM32定时器的一种工作模式,它可以通过改变ARR(自动重装载寄存器)和CCR(捕获比较寄存器)寄存器的值来控制输出的占空比,从而控制输出的电平。在输出比较模式下,CCR寄存器的值是固定的,而占空比是通过改变ARR寄存器(自动重装载值)的值来实现的。此外,每个通道可以产生不同频率的信号。
在STM32CubeMX中的配置:
通道选择Output Compare CH1,下面给触发器使能即可。(预分频系数与自动重装载值的设置有需要的可以前往本文的专栏中有一篇专门讲解PWM的文章)
PWM模式
PWM模式是一种定时器的工作模式,可以通过改变ARR和CCR寄存器的值来控制输出的占空比,从而控制输出的电平。
脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。
在TIMx_CCMRx寄存器中的OCxM位写入'110'(PWM模式1)或'111(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器OCxPE位以使能相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。
在STM32CubeMX中的配置:
通道选择PWMCompare CH1,下面给触发器使能即可。
如果想在PWM模式下改变周期/频率,只需要将Parameter Settings 中的 auto-reload preload使能即可。
区别与联系
PWM模式和输出比较模式都是STM32定时器的工作模式。它们都是通过改变定时器的计数值来控制输出的占空比,从而控制输出的电平。
两者的区别在于(这里的固定都是在初始状态下,也是可以通过其他方法来调节的):
PWM模式下,定时器的计数值是固定的,而占空比是通过改变CCRx寄存器的值来实现的;
输出比较模式下,CCR寄存器的值是固定的,而占空比是通过改变ARR寄存器的值来实现的。
此外,PWM模式下,所有通道产生的频率都是相同的;而在输出比较模式下,每个通道可以产生不同频率的信号。
我们通过图进一步了解一下这两个模式的区别。
PWM模式下:
输出比较模式:
PWM模式在示波器上的效果
在STM32CubeMX中的配置
示波器中的波形
可以看到频率是200Hz(80MHz/(400*100)),符合我们上面的设置,占空比为20%,同样符合我们上面的设置。
望本篇文章对你有所帮助,并在比赛中取得佳绩 👑