hlt512 发表于 2012-1-10 00:02:12

LPC1114串口接收数据不完整问题

LPC1114串口接收数据不完整问题:当上位机向单片机放送数据时,数据长的时候,
比如发送71个字节数据,会时不时的接收异常,只接收一部分数据,但是,再发一次,有可以全部接收下来,如果发送短的数据,
如32个字节,也会出现,但是概率非常小,1000次会有3次左右。
如10个字节以内,我还没发现。

程序是周立功的DEMO
void uartInit (void)
{
    INT16U usFdiv;

    SYSAHBCLKCTRL |= (1ul << 12);                                       
    UARTCLKDIV   = 0x01;                                             

    U0LCR= 0x83;                                                      
    usFdiv = (FAHBCLK / UARTCLKDIV / 16) / UART_BPS;                  
    U0DLM= usFdiv / 256;
    U0DLL= usFdiv % 256;
    U0LCR= 0x03;                                                      
    U0FCR= 0xE7;                                                      
    U0IER= 0x01;                                                   
    U0RS485CTRL = 0x30;                                                
    zyIsrSet(NVIC_UART, (unsigned long)uart0Isr, PRIO_ONE);      
    Uart0IsrState = USER_STATE;
}

中断服务程序如下
void USER_uart0Isr (void)
{
    g_stCOM0.GulNum = 0;

    while ((U0IIR & 0x01) == 0) {                                       
      switch (U0IIR & 0x0E) {                                       
            case 0x04:                                                
                g_stCOM0.GucRcvNew = 1;                                          
                for (g_stCOM0.GulNum = 0; g_stCOM0.GulNum < 14; g_stCOM0.GulNum++)
                {               
                  g_stCOM0.GucRcvBuf = U0RBR;
                }
                break;
            
            case 0x0C:                                                
                g_stCOM0.GucRcvNew = 1;
                while ((U0LSR & 0x01) == 0x01) {                        
                  g_stCOM0.GucRcvBuf = U0RBR;
                  g_stCOM0.GulNum++;
                }
                break;
               
            default:
                break;
      }
    }
}
谢谢!

godlovemei 发表于 2015-3-12 16:02:03

你搞定了吗?搞定后给我看看,我也遇到同样问题了
页: [1]
查看完整版本: LPC1114串口接收数据不完整问题