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;
}
}
}
谢谢! 你搞定了吗?搞定后给我看看,我也遇到同样问题了
页:
[1]