Skip to content

Instantly share code, notes, and snippets.

@Tamakichi
Last active August 2, 2019 08:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Tamakichi/5afee6bb6c3760b95ad033df4034006f to your computer and use it in GitHub Desktop.
Save Tamakichi/5afee6bb6c3760b95ad033df4034006f to your computer and use it in GitHub Desktop.
STM32 Arduino タイマー利用サンプル
//
// STM32 blue pill
// タイマー利用サンプル by たま吉 2017/01/05
// オンボードと外部LEDを0.5秒周期で点滅させる
// 参考情報
// HardwareTimer
// http://docs.leaflabs.com/static.leaflabs.com/pub/leaflabs/maple-docs/latest/lang/api/hardwaretimer.html#using-timer-interrupts
#define LED1_PIN PC13
#define LED2_PIN PA1
uint8_t toggle1 = 0;
uint8_t toggle2 = 0;
void setup() {
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
Timer1.pause(); // タイマー停止
Timer1.setPrescaleFactor(10000); // システムクロック 72MHzを7200Hzに分周
Timer1.setOverflow(7200); // カウンタ値7200でオーバーフロー発生
Timer1.setCompare(1, 1800);
Timer1.attachInterrupt(1, handler_led1); // コンパレータ1にて割り込み発生
Timer1.setCompare(2, 7200);
Timer1.attachInterrupt(2, handler_led2); // コンパレータ2にて割り込み発生
Timer1.refresh(); // タイマーの更新
Timer1.resume(); // タイマースタート
}
void loop() {
}
void handler_led1(void) {
toggle1 ^= 1;
digitalWrite(LED1_PIN, toggle1);
}
void handler_led2(void) {
toggle2 ^= 1;
digitalWrite(LED2_PIN, toggle2);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment