STM32F103のArduino開発環境として Arduino_STM32 を使っています。
今回はタイマー割り込みを使ってみます。
Arduino_STM32 の元になった Leaflabs Maple に詳しいドキュメントがあります。
http://docs.leaflabs.com/static.leaflabs.com/pub/leaflabs/maple-docs/latest/lang/api/hardwaretimer.html#using-timer-interrupts
ここのサンプルコードはそのままでは動作しないので、少し直して動作確認しました。
// from http://docs.leaflabs.com/static.leaflabs.com/pub/leaflabs/maple-docs/latest/lang/api/hardwaretimer.html#using-timer-interrupts
# define LED_RATE 150000    // in microseconds; each 0.15sec trigger
# define BOARD_LED_PIN PC13
HardwareTimer ledtimer(2);  // timer 2
void setup() {
    pinMode(BOARD_LED_PIN, OUTPUT);
    ledtimer.pause();
    ledtimer.setPeriod(LED_RATE);
    ledtimer.setChannel1Mode(TIMER_OUTPUT_COMPARE);
    ledtimer.setCompare(TIMER_CH1, 1);  // Interrupt 1 count after each update
    ledtimer.attachCompare1Interrupt(handler_led);
    ledtimer.refresh();
    ledtimer.resume();
}
void loop(){
}
void handler_led(void){
    static int LEDstate = 0;
    digitalWrite( BOARD_LED_PIN,LEDstate);
    if ( 0 < LEDstate )
    { LEDstate = 0; } else { LEDstate = 1; }
cf.,「STM32F103 + Arduino_STM32 で Sleep」
https://qiita.com/nanbuwks/items/9abca51134226d5431da
