Exemple #1
0
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);
}
Exemple #2
0
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
            }
        }
    }
}