ESP8266で使用出来るタイマー割り込みはいくつかあるようですがOS経由のタイマー割り込みを試してみました。
最小のコードは以下の通りです。
注意点はタイマー関数中(このコードではtimerCallback())でシリアルを使用してはいけません。
グローバル変数に痕跡を残し、loop()側でハンドリングする方法を取る必要があります。
WiFiで通信中でもちゃんとタイマー割り込みはかかってくれます。
extern "C" {
#include "user_interface.h"
}
os_timer_t myTimerFunc;
void timerCallback(void *pArg) {
// タイマーで実行
}
void setup() {
os_timer_setfn(&myTimerFunc, timerCallback, NULL);
os_timer_arm(&myTimerFunc, 1000, true); // 1000msec毎実行
}
void loop() {
yield();
}