单片机的GPIO口可以产生PWM信号,可以使用定时器来实现。使用定时器控制GPIO口的高电平和低电平的翻转时间即可实现输出方波的频率控制和占空比控制。
PWM的两个指标: 占空比和频率,普通的IO只要能控制高低电平变化就可以模拟PWM信号了。
什么叫占空比?
高电平时间占整个周期时间的比例叫占空比,比如一个周期为100ms,高电平部分占了40ms,那么占空比就是40%。
什么叫频率?
每秒种的周期数叫做频率,假如每秒产生50个波形,那么频率就是50Hz。
IO口输出PWM信号的思路
所谓PWM信号是指脉冲宽度调制信号,通过改变高电平持续时间和低电平持续时间实现信号的调节。如果单片机的GPIO口输出高电平持续的时间为1秒钟,然后输出低电平持续时间也是1秒钟,则该信号的周期就为2秒钟,占空比为50%。所以只需要改变高电平持续的时间或者低电平持续的时间,就可以实现脉冲宽度的调制。这里就需要用到定时器来控制GPIO口的定时翻转。
假设单片机输出高电平所持续的时间为T1,翻转为低电平后持续的时间为T2,那么周期就为T1+T2,占空比就为T1/(T1+T2),所以如果保持频率不变只改变占空比,就只修改T1,且保证T1+T2不变。但是因受MCU时钟和IO电平转换速度的限制,频率很高的PWM信号是没法用普