summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2017-04-13 13:08:00 +0800
committerGitHub <[email protected]>2017-04-13 13:08:00 +0800
commitcb0a4962e20baec771c77844644b84d02708be70 (patch)
tree66b3cb9d3b4565c8e7651b8fc119979ef65e958a
parentd185f093038a96ede0d898c2beabaa2bd03ea331 (diff)
parentfd08d0ba503da88890ab3884df11903b5a59c894 (diff)
Merge pull request #716 from AubrCool/fix-stm32f10x.usart.parity.err
[Bsp] stm32f10x usart correct rx parity err
-rw-r--r--bsp/stm32f10x/drivers/usart.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/bsp/stm32f10x/drivers/usart.c b/bsp/stm32f10x/drivers/usart.c
index e5418c14a4..60f34562ba 100644
--- a/bsp/stm32f10x/drivers/usart.c
+++ b/bsp/stm32f10x/drivers/usart.c
@@ -15,6 +15,7 @@
* 2015-01-31 armink make sure the serial transmit complete in putc()
* 2016-05-13 armink add DMA Rx mode
* 2017-01-19 aubr.cool add interrupt Tx mode
+ * 2017-04-13 aubr.cool correct Rx parity err
*/
#include "stm32f10x.h"
@@ -262,7 +263,10 @@ static void uart_isr(struct rt_serial_device *serial) {
if(USART_GetITStatus(uart->uart_device, USART_IT_RXNE) != RESET)
{
- rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND);
+ if(USART_GetFlagStatus(uart->uart_device, USART_FLAG_PE) == RESET)
+ {
+ rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND);
+ }
/* clear interrupt */
USART_ClearITPendingBit(uart->uart_device, USART_IT_RXNE);
}