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