2020年3月19日木曜日

CPU が STM32 の Arduino で SerialEvent を使う方法

 adafruit Trinket M0 を Arduino IDE から使って SerialEvent を使おうとしたらなかった。サンプルソースに

  NOTE: The serialEvent() feature is not available on the Leonardo, Micro, or other ATmega32U4 based boards.

ってあるけど、STM32 based board も追加希望。

 嘆いていてもしようがないのでやる方法を見つけた。

C:\Users\<ユーザー名>\ドキュメント\ArduinoData\packages\adafruit\hardware\samd\1.5.11\variants\trinket_m0\variant.cpp

の最後の方にある

void SERCOM0_Handler() {
  Serial1.IrqHandler();
}

void SERCOM0_HandlerX() {
  Serial1.IrqHandler();
}

に変更。そのあとに自前のスケッチに
 
void SERCOM0_Handler() {
/* 元の割り込みハンドラの実行前にさせる処理 */
 Serial1.IrqHandlerX();
/* 元の割り込みハンドラの実行後にさせる処理 */
 }

を追加。

0 件のコメント:

コメントを投稿