「回路系技術資料/STM32サンプル」の編集履歴(バックアップ)一覧はこちら

回路系技術資料/STM32サンプル - (2011/11/23 (水) 15:53:18) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

*STM32サンプルプログラム **LED点滅 基板上のLEDを点滅させるスケッチです。 int ledPin1 = 40; // LED connected to PC8 (LED4 blue) int ledPin2 = 41; // LED connected to PC9 (LED3 green) void setup(){ pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); } void loop(){ digitalWrite(ledPin1, HIGH); // set the LED on digitalWrite(ledPin2, HIGH); // set the LED on delay(100); // wait for a second digitalWrite(ledPin1, LOW); // set the LED off digitalWrite(ledPin2, LOW); // set the LED off delay(100); // wait for a second } **UARTループバック UART3に送られてきたデータをそのまま返信するスケッチです。 void setup()[ Serial3.begin(9600); } void loop(){ if(Serial3.available()){ Serial3.write(Serial3.read()); } } **タイマー #define LED_RATE 5000000//5秒間隔 HardwareTimer timer1(1); void setup() { pinMode(BOARD_LED_PIN, OUTPUT); timer1.pause(); timer1.setPeriod(LED_RATE);//周期を5秒に設定 timer1.setChannel1Mode(TIMER_OUTPUT_COMPARE); //タイマー1のチャンネル1をコンパレータモードに設定 timer1.setCompare(TIMER_CH1, 1); //タイマーをresumeした瞬間に1回目の割り込みが入る。 //timer1.setCompare(TIMER_CH1, timer1.getOverflow()); //タイマーをresumeして5秒に1回目の割り込みが入る。 //timer1.setCompare(TIMER_CH1, timer1.getOverflow() * 0.5); //タイマーをresumeして2.5秒に1回目の割り込みが入る。 timer1.attachCompare1Interrupt(handler_led); timer1.refresh(); timer1.resume(); } void loop() { } void handler_led(void) {// toggleLED();//基板上の青LEDを点滅 } **PWM 8番ピン(PA8)を1Hzで点滅させるスケッチです。 タイマー1の周期を変更しているので、タイマー1を使う他のプログラムと組み合わせて使う場合は注意してください。 HardwareTimer timer1(1); void setup(){ timer1.setPeriod(1000 * 1000);//1Hzに設定 pinMode(8,PWM);//8番ピンをPWMに設定 analogWrite(8,timer1.getOverflow() * 0.5);//50% } void loop(){ } また、PWM出力させるピンを変更する場合以下の表を参考にしてください。 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)|
*STM32サンプルプログラム **LED点滅 基板上のLEDを点滅させるスケッチです。 int ledPin1 = 40; // LED connected to PC8 (LED4 blue) int ledPin2 = 41; // LED connected to PC9 (LED3 green) void setup(){ pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); } void loop(){ digitalWrite(ledPin1, HIGH); // set the LED on digitalWrite(ledPin2, HIGH); // set the LED on delay(100); // wait for a second digitalWrite(ledPin1, LOW); // set the LED off digitalWrite(ledPin2, LOW); // set the LED off delay(100); // wait for a second } **UARTループバック UART3に送られてきたデータをそのまま返信するスケッチです。 void setup()[ Serial3.begin(9600); } void loop(){ if(Serial3.available()){ Serial3.write(Serial3.read()); } } **タイマー #define LED_RATE 5000000//5秒間隔 HardwareTimer timer1(1); void setup() { pinMode(BOARD_LED_PIN, OUTPUT); timer1.pause(); timer1.setPeriod(LED_RATE);//周期を5秒に設定 timer1.setChannel1Mode(TIMER_OUTPUT_COMPARE); //タイマー1のチャンネル1をコンパレータモードに設定 timer1.setCompare(TIMER_CH1, 1); //タイマーをresumeした瞬間に1回目の割り込みが入る。 //timer1.setCompare(TIMER_CH1, timer1.getOverflow()); //タイマーをresumeして5秒に1回目の割り込みが入る。 //timer1.setCompare(TIMER_CH1, timer1.getOverflow() * 0.5); //タイマーをresumeして2.5秒に1回目の割り込みが入る。 timer1.attachCompare1Interrupt(handler_led); timer1.refresh(); timer1.resume(); } void loop() { } void handler_led(void) {// toggleLED();//基板上の青LEDを点滅 } **PWM 8番ピン(PA8)を1Hzで点滅させるスケッチです。 タイマー1の周期を変更しているので、タイマー1を使う他のプログラムと組み合わせて使う場合は注意してください。 HardwareTimer timer1(1); void setup(){ timer1.setPeriod(1000 * 1000);//1Hzに設定 pinMode(8,PWM);//8番ピンをPWMに設定 analogWrite(8,timer1.getOverflow() * 0.5);//50% } void loop(){ } また、PWM出力させるピンを変更する場合以下の表を参考にしてください。 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)|

表示オプション

横に並べて表示:
変化行の前後のみ表示: