仿照HotPower的《LPCARM串口无限FIFO应用举例及祥解》改写. 只有接收使用中断方式!我用UART1接modem。如果发送的PPP包为23bytes。 7E FF 7D 23 C0 21 7D 23 7D 21 7D 20 7D 28 7D 23 7D 24 C0 23 22 48 7E 接收到的也仅为23bytes。 7D 34 7D 22 7D 26 7D 20 7D 20 7D 20 7D 20 7D 25 7D 26 52 7D 38 7D 30 事实上不应该是23bytes,而是多于23bytes的。串口收不到所有,只能在下一次接收剩余的。 为什么不能完整接收缓冲中的字符呢? 郁闷死啦! U1FCR = 0xc3; U1IER = 0x05;
void UART1_Exception(void) {
OS_ENTER_CRITICAL(); switch (U1IIR & 0x0f) {
case 0x06: switch (U1LSR) { case 0x03: break; } break;
case 0x04: case 0x0c: while (U1LSR & 0x01) { p_Uart1Wr %= MAX_UART1_BUFFER;
uart1_Buf[p_Uart1Wr++] = U1RBR; uart1_Useful_Data++; if (uart1_Useful_Data > MAX_UART1_BUFFER) { uart1_Useful_Data = MAX_UART1_BUFFER; } uart1_Interrupt = TRUE; } default: break;
}
VICVectAddr = 0x00; OS_EXIT_CRITICAL(); }
|