PWM(Pulse Width Modulation,脉冲宽度调制)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术应用最广泛的控制方式,其应用领域包括测量、通信、功率控制与变换、电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器。研究基于PWM技术的正负脉宽数控调制信号发生器,具有十分重要的现实意义。
STM32的定时器除了TIM6和TIM7,其他的定时器都可以用来产生PWM输出。其中高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出,而通用定时器也能同时产生多达4路的PWM输出。这样,STM32最多可以同时产生30路PWM输出!
脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。
在TIMx_CCMRx寄存器中的OCxM位写入“110”(PWM模式1)或“111”(PWM模式2),能够独立地设置每个OCx输出通道产生一路PWM。必须设置TIMx_CCMRx寄存器OCxPE位以使能相应地预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位(在向上计数或中心对称模式中),使其能自动重装载预装载寄存器。
【例4.6】如图4.14所示,使用PWM完成呼吸灯的设计,模拟电机由慢到快,再实现由快到慢循环调速功能。
图4.14 基于PWM的LED呼吸灯的实现硬件电路
编程分析:为了使LED1产生呼吸灯的效果,需要不断调整PWM的占空比,占空比由高到底,由低到高。之后,再循环上述过程即可。
编程要点:
(1)配置LED引脚。
(2)配置定时器TIM3。(www.daowen.com)
(3)配置PWM。
(4)编写主函数。
程序编写及源程序代码分析如下。
(1)复制例4.5工程文件,删除、修改原工程中文件和内容即可。
(2)编写源程序代码。
Led.h源程序代码如下所述。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。