Fix spurious interrupts from STM32 ORE (#456)
Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
+9
-11
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user