トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Tips-割り込み

ESP32-micropython

from machine import Pin,Timer
from time import sleep

pin=Pin(19, mode=Pin.OUT)

def led(t):      # t はタイマのインスタンスが入っている
    pin.value(not pin.value())

t0 = Timer(0)           # タイマは0〜3が指定可能
#20mSec 毎に led を呼び出す
t0.init(period=20, mode=Timer.PERIODIC, callback=led)

sleep(5)
t0.deinit()

STM32f103 - arduino-ide

https://scrapbox.io/ArduinoSTM32/HardwareTimer

#define LED_PIN  PC13  // OnボードLED timer2 1CH用出力ピン

uint8_t sw = LOW;

// 割り込み処理関数
void handle_timer() {
 if (sw == LOW) {
   sw = HIGH;
 } else {
   sw = LOW;    
 } 
 digitalWrite(LED_PIN, sw);
}

void setup() {
 pinMode(LED_PIN, OUTPUT);
 Timer2.pause();                   // タイマー停止
 Timer2.setPrescaleFactor(7200);   // システムクロック 72MHzを10kHzに分周
 Timer2.setOverflow(5000);        // 最大値を0.5秒に設定

 Timer2.attachInterrupt(           // 割り込みハンドラの登録
     TIMER_UPDATE_INTERRUPT,       // 呼び出し条件は、カウンターオーバーフロー更新時
     handle_timer                  // 呼び出す関数
   );  

 Timer2.setCount(0);               // カウンタを0に設定
 Timer2.refresh();                 // タイマ更新
 Timer2.resume();                  // タイマースタート
}

void loop() {

}