1.你对占空比的理解是对的,但还有一点你漏了,就是频率,或者说一个高低电平的时长也是PWM波的关键参数.
2.你的程序写的效果,单片机只控制一个I/O口的高低电平变换,这样是可以产生PWM波的,但是占空比不稳定,原因在于你这个延时函数本身延时就是不精准的,可以放到中断里做高低电平的转换,这样PWM波的占空比和频率可以稳定一些.当然以上这些是建立在单片机只控制一个IO口也只做高低电平转换的情况下分析的
如果加入其他功能,你这样的程序根本产生不了PWM波,
3.你想问的是不是有些教材上标出了PWM引脚,原因是有些单片机是有硬件PWM,这样可以产生稳定且不受干扰的PWM波.
4.比如说你现在要产生占空比20%的频率固定的PWM波,你这个程序,最后跑出来的占空比可能在20%~50%波动.然后你加一些其他功能(比如按键,LED灯之类的),占空比就飘了,变成10%~90%,
如果改成中断,也就是你说的定时器,固定时间进来改变一下IO的电平,因为时间一样所以可以产生50%的占空比,实际跑出来可能就是48%~52%,同理加上其他一些功能,占空比可能就变成45%~55%,对一些要求不高的设备是可以用的
要是换到硬件PWM那你产生的占空比是固定的,不受你添加的功能影响,除非单片机程序跑飞了 |