diff --git a/src/shared/drivers/usart/USART.cpp b/src/shared/drivers/usart/USART.cpp index f5c787d6fb5ca54ba6868ef5f95b997b1e74660c..5efb72ea91d3c933a092f2da2b888b5b79edfc09 100644 --- a/src/shared/drivers/usart/USART.cpp +++ b/src/shared/drivers/usart/USART.cpp @@ -30,6 +30,7 @@ #include "arch/common/drivers/serial.h" #include "filesystem/file_access.h" +#include "kernel/scheduler/scheduler.h" #include "miosix.h" ///< Pointer to serial port classes to let interrupts access the classes @@ -368,6 +369,11 @@ void USART::IRQhandleInterrupt() if (rxWaiting) { rxWaiting->IRQwakeup(); + if (rxWaiting->IRQgetPriority() > + miosix::Thread::IRQgetCurrentThread()->IRQgetPriority()) + { + miosix::Scheduler::IRQfindNextThread(); + } rxWaiting = nullptr; } }