File tree 1 file changed +12
-5
lines changed
1 file changed +12
-5
lines changed Original file line number Diff line number Diff line change @@ -801,16 +801,23 @@ void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
801
801
}
802
802
#else
803
803
if (__HAL_UART_GET_FLAG (huart , UART_FLAG_PE ) != RESET ) {
804
- tmpval = huart -> Instance -> RDR ; /* Clear PE flag */
804
+ __HAL_UART_CLEAR_FLAG ( huart , UART_CLEAR_PEF ) ; /* Clear PE flag */
805
805
} else if (__HAL_UART_GET_FLAG (huart , UART_FLAG_FE ) != RESET ) {
806
- tmpval = huart -> Instance -> RDR ; /* Clear FE flag */
806
+ __HAL_UART_CLEAR_FLAG ( huart , UART_CLEAR_FEF ) ; /* Clear FE flag */
807
807
} else if (__HAL_UART_GET_FLAG (huart , UART_FLAG_NE ) != RESET ) {
808
- tmpval = huart -> Instance -> RDR ; /* Clear NE flag */
808
+ __HAL_UART_CLEAR_FLAG ( huart , UART_CLEAR_NEF ) ; /* Clear NE flag */
809
809
} else if (__HAL_UART_GET_FLAG (huart , UART_FLAG_ORE ) != RESET ) {
810
- tmpval = huart -> Instance -> RDR ; /* Clear ORE flag */
810
+ __HAL_UART_CLEAR_FLAG ( huart , UART_CLEAR_OREF ) ; /* Clear ORE flag */
811
811
}
812
812
#endif
813
-
813
+ /* Restart receive interrupt after any error */
814
+ uint8_t index = uart_index (huart );
815
+ if (index < UART_NUM ) {
816
+ serial_t * obj = rx_callback_obj [index ];
817
+ if (!serial_rx_active (obj )) {
818
+ HAL_UART_Receive_IT (uart_handlers [obj -> index ], & (obj -> recv ), 1 );
819
+ }
820
+ }
814
821
UNUSED (tmpval );
815
822
}
816
823
You can’t perform that action at this time.
0 commit comments