void Uart::interruptHandler(void) { uint32_t status; // Read interrupt source status = UARTIntStatus(uart_.base, true); // Clear UART interrupt in the NVIC IntPendClear(uart_.interrupt); // Process TX interrupt if (status & UART_INT_TX) { UARTIntClear(uart_.base, UART_INT_TX); interruptHandlerTx(); } // Process RX interrupt if (status & UART_INT_RX || status & UART_INT_RT) { UARTIntClear(uart_.base, UART_INT_RX | UART_INT_RT); interruptHandlerRx(); } }
void Spi::interruptHandler(void) { uint32_t status; // Read interrupt source status = SSIIntStatus(config_.base, true); // Clear SPI interrupt in the NVIC IntPendClear(config_.interrupt); // Process TX interrupt if (status & SSI_TXFF) { interruptHandlerTx(); } // Process RX interrupt if (status & SSI_RXFF) { interruptHandlerRx(); } }