From 310561ac50be016fca2375d8d003e54d7478599d Mon Sep 17 00:00:00 2001 From: Piotr Esden-Tempski Date: Thu, 17 Feb 2011 18:32:07 -0800 Subject: [PATCH] Made usart_irq example more robust. It should not duplicate bytes anymore. --- examples/stm32/obldc/usart_irq/usart_irq.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/stm32/obldc/usart_irq/usart_irq.c b/examples/stm32/obldc/usart_irq/usart_irq.c index 2d4dd06b..7e5f9719 100644 --- a/examples/stm32/obldc/usart_irq/usart_irq.c +++ b/examples/stm32/obldc/usart_irq/usart_irq.c @@ -80,7 +80,8 @@ void usart1_isr(void) static u8 data = 'A'; /* Check if we were called because of RXNE. */ - if ((USART_SR(USART1) & USART_SR_RXNE) != 0) { + if (((USART_CR1(USART1) & USART_SR_RXNEIE) != 0) && + ((USART_SR(USART1) & USART_SR_RXNE) != 0)) { /* Indicate that we got data. */ gpio_toggle(GPIOA, GPIO6); @@ -92,7 +93,8 @@ void usart1_isr(void) } /* Check if we were called because of TXE. */ - if ((USART_SR(USART1) & USART_SR_TXE) != 0) { + if ((USART_CR1(USART1) & USART_SR_TXEIE) != 0) && + ((USART_SR(USART1) & USART_SR_TXE) != 0)) { /* Indicate that we are sending out data. */ gpio_toggle(GPIOA, GPIO7);