Fix spurious interrupts from STM32 ORE (#456)

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
Steve Karg
2023-07-17 13:49:40 -05:00
committed by GitHub
parent fcc9647983
commit 7db03ac5e5
2 changed files with 12 additions and 11 deletions
+9 -11
View File
@@ -110,17 +110,9 @@ bool rs485_receive_error(void)
return false; return false;
} }
/*********************************************************************/ /** /**
* @brief * @brief USARTx interrupt handler sub-routine
*USARTx */
*interrupt
*handler
*sub-routine
* @param[in]
*None
* @return
*None
**********************************************************************/
void USART2_IRQHandler(void) void USART2_IRQHandler(void)
{ {
uint8_t data_byte; uint8_t data_byte;
@@ -130,6 +122,12 @@ void USART2_IRQHandler(void)
data_byte = USART_ReceiveData(USART2); data_byte = USART_ReceiveData(USART2);
(void)FIFO_Put(&Receive_Buffer, data_byte); (void)FIFO_Put(&Receive_Buffer, data_byte);
} }
if (USART_GetFlagStatus(USART2, USART_FLAG_ORE) != RESET) {
/* note: enabling RXNE interrupt also enables the ORE interrupt! */
/* dummy read to clear error state */
data_byte = USART_ReceiveData(USART2);
USART_ClearFlag(USART2, USART_FLAG_ORE);
}
} }
/************************************************************************* /*************************************************************************
+3
View File
@@ -149,6 +149,9 @@ void USART6_IRQHandler(void)
} }
/* check for errors and clear them */ /* check for errors and clear them */
if (USART_GetFlagStatus(USART6, USART_FLAG_ORE) == SET) { if (USART_GetFlagStatus(USART6, USART_FLAG_ORE) == SET) {
/* note: enabling RXNE interrupt also enables the ORE interrupt! */
/* dummy read to clear error state */
data_byte = USART_ReceiveData(USART6);
USART_ClearFlag(USART6, USART_FLAG_ORE); USART_ClearFlag(USART6, USART_FLAG_ORE);
} }
if (USART_GetFlagStatus(USART6, USART_FLAG_NE) == SET) { if (USART_GetFlagStatus(USART6, USART_FLAG_NE) == SET) {