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那你產生的占空比是固定的,不受你添加的功能影響,除非單片機程序跑飛了 |