Arm Mbed OS support forum

シリアル送信中にシリアル受信割込みが入るとフリーズしてしまう

環境

使用ボード:NUCLEO-F303K8

開発環境:VSCode + PlatformIO

状況

シリアル受信割込みを使ってMIDIを受信しつつステータスをUSBシリアル経由で出力するコードを書いていますがごくまれにフリーズしてしまいます。

調べてみるとシリアル送信中に受信割込みが入ってしまうとmbedが止まってしまうという記事を見つけました。

原因は分かったのですが、具体的な対処方法が思い浮かびません。

シリアル送信の前後で

void testSend(void){
    serial.attach(NULL,Serial::RxIrq);
    //----送信処理----
    serial.attach(receiveFunction,Serial::TxIrq);
}

のように記述をしましたが最初に少し動いてそれ以降動きません。

また

__disable_irq();
__enable_irq();

を使っても同様の結果でした。

この場合、どのようにすればシリアル送信中にシリアル受信割込みが入った際にもフリーズせずに処理を続行させることができるのでしょうか、ご教授お願い致します。

シリアル送信に関してはそこまでリアルタイム性は求めていません。