HAL は、割り込みでシリアル データを受信するための次の関数を提供しているようです。HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
これは、基本的に rx 割り込みをセットアップして戻ります。
HAL_UART_RxCpltCallback()受信したバイト数が に達すると呼び出されますSize。
HAL は、このコールバックを実行する直前に rx 割り込みを無効にします
問題:
着信バイトの量は可変 (1 から ~100 まで) であり、それらをリング バッファに入れる必要があります。
したがって、1 に設定Sizeし、コールバック内で再度呼び出しHAL_UART_Receive_IT()て割り込みを再度有効にします。ボードが 1 バイトまたは 2 バイトを時々送信する場合はうまく機能しますが、それ以上のバイトは失われます。
私の推測では、割り込みの無効化と有効化の間に到着するため、それらは見逃されていると思います
HAL Cube で生成されたコードを上書きせずに、割り込みを永久に実行し続ける方法はありますか?
そうでない場合、関連する関数を上書きするクリーンな方法は何でしょうか?
この解決策を見つける必要がないように、私が見逃しているものはありますか?