diff --git a/cpu/stm32f3/periph/uart.c b/cpu/stm32f3/periph/uart.c
index 6cd047662b0e178aa8aa5eaba5a4e1ade1a7b334..5e1e046e8e34d55b2cdac4c413f3a146ac9b0ccc 100644
--- a/cpu/stm32f3/periph/uart.c
+++ b/cpu/stm32f3/periph/uart.c
@@ -190,6 +190,10 @@ static inline void irq_handler(uint8_t uartnum, USART_TypeDef *dev)
         char data = (char)dev->RDR;
         uart_config[uartnum].rx_cb(uart_config[uartnum].arg, data);
     }
+    else if (dev->ISR & USART_ISR_ORE) {
+        /* do nothing on overrun */
+        dev->ICR |= USART_ICR_ORECF;
+    }
     if (sched_context_switch_request) {
         thread_yield();
     }