- EXTI for edge trigger with Priority 6
- Serial Driver UART with Priority 12
This means the EXTI interrupt has a higher priority than the UART interrupt. The EXTI interrupt is never missed.
Every time the EXTI interrupt occurs, the following callback is executed:
Code: Select all
chSysLockFromISR();
chVTSetI(..);
chSysUnlockFromISR();
The UART is configured at a baud rate of 230400 and receives approximately 3 kB every 200 ms. Data from the UART data register is read into a message queue with a buffer size of 32. From a thread, the data is then read from the queue into a FIFO buffer.
Byte drop doesn't happen every time. Is UART interrupt not going into pending state because of high priority ISR and hence the byte is dropped?