環境
使用ボード:NUCLEO-F303K8
開発環境:VSCode + PlatformIO
状況
シリアル受信割込みを使ってMIDIを受信しつつステータスをUSBシリアル経由で出力するコードを書いていますがごくまれにフリーズしてしまいます。
調べてみるとシリアル送信中に受信割込みが入ってしまうとmbedが止まってしまうという記事を見つけました。
原因は分かったのですが、具体的な対処方法が思い浮かびません。
シリアル送信の前後で
void testSend(void){
serial.attach(NULL,Serial::RxIrq);
//----送信処理----
serial.attach(receiveFunction,Serial::TxIrq);
}
のように記述をしましたが最初に少し動いてそれ以降動きません。
また
__disable_irq();
__enable_irq();
を使っても同様の結果でした。
この場合、どのようにすればシリアル送信中にシリアル受信割込みが入った際にもフリーズせずに処理を続行させることができるのでしょうか、ご教授お願い致します。
シリアル送信に関してはそこまでリアルタイム性は求めていません。