参考: InterruptIn - API references and tutorials | Mbed OS 6 Documentation
ISRの中でMbed BusOutインスタンスをインクリメントしようとするとmutexエラーが出てしまうため、ISRはフラグを立てるだけにした。このへんのしくみはわからない。
下のプログラムは、タクトスイッチを押すたびに1だけインクリメントしてそれをLEDに表示する。ディバウンスしていないので時々数字が飛ぶ。
#include "mbed.h" InterruptIn IntIn(PC_3, PullUp); // InterruptInクラスを(PinName, 入力回路)でインスタンス化する。 BusOut led(PA_10, PB_3, PB_5, PB_4); bool triggered(false); // これがISR。 void at_falling(){ triggered = true; } int main(){ IntIn.fall(&at_falling); // fall時に割り込んで、at_falling函数を実行する。 uint8_t i = 0; while(1){ if(triggered){ triggered = false; led = ~i; i++; } } return 0; }