/** **************************************************************************************** * @brief Get a character. * @return received char * @description * Get a character form uart debug port. **************************************************************************************** */ unsigned char UartGetc(void) { /* As long as Receive FIFO is not empty, I can always receive. */ while ( !(uart_uart_GetIntFlag(QN_DEBUG_UART) & UART_MASK_RX_IF) ); return (uart_uart_GetRXD(QN_DEBUG_UART)); }
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 } } } }