0

我在 LPC1769 上的串行通信有一些问题,计算机(Qt 开发的软件)和 LPC1769 之间的两种方式都有一些通信。从 LPC 到计算机的通信工作正常,但从计算机到 LPC 的通信不正常。

我只能从发送的缓冲区接收前两个字节。

void UART1_Init(void)
{
    PCONP |= (1<<4);    // UART1 ON

    PCLKSEL0 &= ~(0x11 << 8);
    PCLKSEL0 |= (0x1 << 8);

    U1LCR |= 1 << 7; // 0x80   line control register (DLAB=1)

    U1DLM = 0x00;       //0x001A = 26

    U1DLL = 0x1A;       //DLM. DLL . DLL 4Mhz

    U1LCR &= 0x7f;      //DLAB=0 8bits no parity

    U1FCR |= 0x01;

    SET_PINSEL(PIN_TX1,PINSEL_FUNC1);
    SET_PINSEL(PIN_RX1,PINSEL_FUNC1);

    ISER0 = 1<<6;       // interruptions UART1. 

    U1IER = 0x03;       

}

void UART1_IRQHandler(void)
{
    uint32_t IIR;
    uint8_t IIRenCruso, IIRpendiente;
    uint8_t temp, lsr;

    do
    {
        IIR = U1IIR;

        IIRpendiente = IIR & 0x01;
        IIRenCruso = ( IIR >> 1 ) & 0x07;

        switch(IIRenCruso)      
        {

        case 3:
            lsr = U0LSR;    
            if ( lsr & (0x2|0x4|0x8|0x16|0x128) )
            {
                temp = U0RBR;       
                return;
            }

            case 2: //Recieve data available (RDA)
                pushRx(U1RBR);
                break;

            case 1:     //THRE Interrupt
                temp = popTx();

                if(temp != 0xff)
                    U1THR = temp;

                else{
                    f_fin_tx = 1; 
                            vaciarBuff('T');
                }

                break;

            default:
                break;
        }
    }   while( ! ( IIRpendiente & 0x01 ) );
}
4

0 回答 0