STM32-PWM
ピン配置
PWMを出力させることができるピンの一覧
8(PA8) |
9(PA9) |
10(PA10) |
|
0(PA0) |
1(PA1) |
2(PA2) |
3(PA3) |
6(PA6) |
7(PA7) |
16(PB0) |
17(PB1) |
22(PB6) |
23(PB7) |
24(PB8) |
25(PB9) |
標準の周波数で動かす場合
標準の周波数(183Hz)で動かす場合、PWM出力したいピンをpinMode関数で指定します。pinModeでPWMモードに設定したピンは内部のモジュールが有効になり、PWM信号が出力されます。PWMのデューティ比の変更にはanalogWrite関数を使います。
標準の周波数で動かす場合65535にデューティ比をかけた値を指定します。
void setup(){
pinMode(8,PWM);//8番ピンをPWMに設定
analogWrite(8,65535 * 0.5);//デューティ比50%
}
void loop(){
}
周波数を変更して動かす場合
標準のPWM周波数は183Hz程度です。周波数を変更変更したい場合は対応するタイマーのsetPeriod関数を使います。
- uint16 setPeriod(uint32 microseconds)
タイマーの周期を設定する関数です。内部でsetPrescaleFactor関数とsetOverflow関数
を呼び出しています。戻り値はanalogWrite関数で設定できる最大の値になります。
PWMピンとタイマーの関係
TIMER1 |
8(PA8) |
9(PA9) |
10(PA10) |
|
TIMER2 |
0(PA0) |
1(PA1) |
2(PA2) |
3(PA3) |
TIMER3 |
6(PA6) |
7(PA7) |
16(PB0) |
17(PB1) |
TIMER4 |
22(PB6) |
23(PB7) |
24(PB8) |
25(PB9) |
デューティ比の変更にはanalogWrite関数を使います。
setPeriod関数かgetOverflow関数の戻り値にデューティ比をかけた値を使います。
何回も呼び出す場合はsetOverflow関数を推奨します。
HardwareTimer timer1(1);//8番ピンはTimer1と対応しているので初期化。
void setup(){
timer1.setPeriod(1000 * 1000);//周波数を1Hzに設定
pinMode(8,PWM);//8番ピンをPWMに設定
analogWrite(8,timer1.getOverflow() * 0.5);//デューティ比50%
}
void loop(){
}
最終更新:2011年12月12日 00:47