这个是如何产生的?是FIFO中的数据不为空吗,但是这个空只能是由硬件来控制,还是我的串口初始化流程有些问题?
以下为初始化程序,谢谢
//
// Set GPIO A0 and A1 as UART pins.
//
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
//
// Configure the UART for 115,200, 8-N-1 operation.
//
UARTConfigSetExpClk(UART0_BASE, SysCtlClockGet(), 115200,
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
//
//Enable the FIFO and set the FIFO level
//
UARTFIFOEnable(UART0_BASE);
UARTFIFOLevelSet(UART0_BASE,UART_FIFO_TX4_8,UART_FIFO_RX4_8);
//
// Enable the UART interrupt.
//
IntEnable(INT_UART0);
UARTIntEnable(UART0_BASE, UART_INT_RX | UART_INT_RT);
初始化源代码并没有问题,感觉这个问题主要是上电导致的。一般来说,上电时候会有电平不稳的情况,这样可能在串口数据线上产生脉冲,让接收方认为有数据到来。楼主收到的数据基本高位都是1,最低一两位是0的情况也基本印证了这点。
所以这个0基本是接收机的误判,所以处理方法上可以丢掉这个数据或者设法在MCU上电时保持UART TX脚电平的稳定
整理自:https://www.deyisupport.com/question_answer/f/57/t/9510.aspx