PWM(Pulse Width Modulation,脉冲宽度调制)是一种调制技术,通过改变脉冲信号的占空比来控制平均输出电压或功率。
PWM 的相关参数
PWM主要有三个参数:频率、占空比、分辨率
频率:
- 定义:PWM 信号的频率指的是单位时间内一个完整周期(高电平和低电平持续时间总和)的重复次数,通常以赫兹(Hz)为单位。
- 例子:如果 PWM 信号的频率为 1 kHz,这意味着每秒钟会重复 1000 次完整的高低电平循环。
占空比:
- 定义:占空比是高电平持续时间与整个周期时间的比例,通常以百分比表示。它决定了平均输出功率。
- 例子:如果一个 PWM 信号的周期为 10ms,其中高电平持续 6ms,低电平持续 4ms,则占空比为 60%(6 ms / 10 ms × 100%)。在 LED 调光中,60% 的占空比会使 LED 发出比 30%占 空比更亮的光。
分辨率:
- 就是占空比变化的快慢,占空比变化的细腻程度。占空比跳的快如按照 1% 跳变与按照 0.1% 跳变,那么 0.1% 的跳变就越细腻,越柔和。
PWM 工作原理
图片 PWM 的工作过程为:定时器模块中的计数器(CNT)从 0 开始递增,当达到自动重装寄存器(ARR)设置的最大值时,计数器会自动清零并重新开始。捕获/比较寄存器(CCR)存储一个比较值,当计数器的值小于CCR时,输出信号保持高电平;当计数器的值大于等于CCR时,输出信号变为低电平,从而生成占空比可调的 PWM 信号。通过调整 ARR 可以控制 PWM 的频率,而通过改变 CCR 的值可以调整 PWM 信号的占空比。
实现
功能:通过 PWM 实现一个灯的闪烁
代码
1 |
|
prescaler:计数器时钟等于 TIMER_CK 时钟除以(PSC+1),每次当更新事件产生时,PSC 的值被装入到对应的影子寄存器。
根据引脚所复用的定时器去选择通道
如果想要让多个 LED 灯实现流水效果我们可以使用同一个 PWM 的不同通道,将 GPIO 复用为某个具体的通道,然后配置通道即可
问题
一、通道极性和 PWM0,PWM1 的区别
通道的极性代表的就是通道的有效电平和事件产生时通道的输出电平是高还是低;
PWM 模式 0。在向上计数时,一旦计数器值小于 TIMERx_CH0CV 时,O0CPRE 为有效电平,否则为无效电平。在向下计数时,一旦计数器的值大于 TIMERx_CH0CV 时,O0CPRE 为无效电平,否则为有效电平。
PWM 模式 1。在向上计数时,一旦计数器值小于 TIMERx_CH0CV 时,O0CPRE 为无效电平,否则为有效电平。在向下计数时,一旦计数器的值大于 TIMERx_CH0CV 时, O0CPRE 为有效电平,否则为无效电平。