定时器PWM波的输出: 输出PWM波实际上可以理解为输出方波, 我们常用单片机代码设置只能设置高电平、低电平, 但是我们很难精准控制到比如一个IO口在特定周期内输出多长时间的高电平、低电平。 然而单片机的pwm功能就实现了这个功能。
输出PWM的限制条件:
1、只能由通用定时器 或者 高级定时器的通道输出 :
原因很简单,我们PWM的输出是跟周期定时有关的,所以肯定要用到定时器,定时器的一个作用是设定周期, 也就是波输出的频率 。 另外一个跟PWM有关的是设定一个计数值,当计数低于该值的时候输出高/低电平, 反之输出另外一种电平 (这个功能主要是由定时器通道自带的设置,跟定时器的周期设置是两码事) ------ 对比值为自动重装值。
2、PWM输出的频率受定时器控制:
定时器的周期频率是固定的,然后一个定时器通常4个通道,这4个通道如果都用来输出pwm波,我们可以改变的只是pwm波的占空比(高电平占用周期的百分百),但是同一定时器下,这4个通道输出的pwm波的周期频率都是一样的。
占空比的设置
占空比可以理解为一个定时器输出高电平占用整个定时周期的百分比。比如周期为1秒,输出高电平0.5秒,占空比就是50%
设置占空比之前,我们应该明确定时器的计时方式:
1. 向上计数 还是向下计数。
2.低于比较值的时候是输出高电平 还是输出低电平
正常情况下,我们定时器都是默认以向上计数、低于比较值的时候输出高电平 为例子。
占空比的对比比较目标: 自动重装值
在我前面的博客讲到,自动重装值也就是一个周期的计数值。然后我们比较值的设置就对比于这个。 假设我们自动重装值设置是1000 , 比较值设置为100 。 配置为向上计数、低于比较值的时候输出高电平。
这个时候,相当于 计数 0-100就是高电平, 101-1000就是低电平, 所以占空比也就是100/1000 = 10%
假设定时器设置周期是1秒,这样下来就是0.1秒为高电平、0.9秒为低电平。
pwm的应用领域
1、 LED亮灭的控制
2、电机转速的控制
3、舵机角度的控制
4、机器周期性运作