AVR单片机的PWM输出,由时钟频率、时钟分频系数、时间常数等几个参数决定。硬件产生任意频率的PWM是做不到的,只能通过这几个参数的组合计算,看能不能产生需要的频率。
当然,如果要求不高,可以用延时的方法,这样产生频率的范围就大多了。
原則上這類除頻方法都是整數除法,所以如果您要介於fclock/2~fclock/3之間的話
必須對fclock作變更,但如果這是主時鐘的話可能會有些問題
應該要分頻出來的外設時鐘才能正常修改,另外應該無法任意設置中間任何頻率,只有範圍內的特定幾個頻率
附上PWM頻率運算式
MCU Clock / [Prescaler * Counter(16 Bit為65535)]
以上供參考
先定义一个输出IO口,比如:pinMode(3,OUTPUT);
再在循环体中设置输出脉宽输出,比如:analogWrite(3,duty);
其中的duty就是你给的脉宽,数值由你自己设定。可以尝试1~255的值。
在PIN3就能检测到PWM信号了。试试吧?