1.概念
PWM:Pulse-width modulation,即脉宽调制。
简单的来说就是控制一个信号周期内高/低电平持续的时间。
脉宽:脉冲是指短时间内出现电压或电流的突然变化,脉宽就是脉冲宽度也就是脉冲持续时间,也就是高/低电平持续时间)。
占空比:指的就是一个信号周期内,高电平所占时间的比例(严谨的说法应该是有效电平占比);
脉冲:
定时器通过计数器与输出比较值进行比较,实现高低电平的切换,下面借用正点原子的图片:
以PWM模式2为例
当CNT<CCRx的时候,IO输出低电平(逻辑0),反之输出高电平(逻辑1),到达ARR即完成一个信号周期。因此通过修改CCRx的值就可以实现修改PWM占空比的目的,修改ARR就可以改变PWM的频率,也就是信号周期变大/小。
2、创建工程
找到可以与定时器通道复用的LED,我的在TIM1,进行如下配置:
通过在main函数的while中循环修改CCRx寄存器的值(输出比较值)来修改占空比,实现呼吸灯的效果
注:
这里的有/无效电平要配合另一个参数设置进行看:
这里我的LED低电平的时候是亮的,因此低电平有效,所以当使用PWM1模式的时候,当CCR的值很小时,有效电平的占空比就会很小,灯的亮度就小。反之亦然