void com_uart_at_rx_start(void) { uart_uart_ClrIntFlag(CFG_COM_UART,0x1ff); uart_uart_GetRXD(CFG_COM_UART); com_env.com_at_len = 0; uart_read(QN_COM_UART, &com_env.com_at_buf[com_env.com_at_len], 1, com_uart_at); }
void UART1_RX_IRQHandler(void) { uint32_t reg; reg = uart_uart_GetIntFlag(QN_UART1); if ( reg & UART_MASK_BE_IF ) { // Break error interrupt // clear interrupt uart_uart_ClrIntFlag(QN_UART1, UART_MASK_BE_IF); } else if ( reg & UART_MASK_PE_IF ) { // Parity error interrupt // clear interrupt uart_uart_ClrIntFlag(QN_UART1, UART_MASK_PE_IF); } else if ( reg & UART_MASK_FE_IF ) { // Framing error interrupt // clear interrupt uart_uart_ClrIntFlag(QN_UART1, UART_MASK_FE_IF); } else if ( reg & UART_MASK_OE_IF ) { // Overrun error interrupt // clear interrupt uart_uart_ClrIntFlag(QN_UART1, UART_MASK_OE_IF); } else if ( reg & UART_MASK_RX_IF ) { // RX FIFO is not empty interrupt // clear interrupt reg = uart_uart_GetRXD(QN_UART1); if (uart1_env.rx.size > 0) { *uart1_env.rx.bufptr++ = reg; uart1_env.rx.size--; if (uart1_env.rx.size == 0) { // Disable UART all rx int uart_rx_int_enable(QN_UART1, MASK_DISABLE); #if UART_CALLBACK_EN==TRUE // Call end of reception callback if(uart1_env.rx.callback != NULL) { uart1_env.rx.callback(); } #endif } } } }