昨晚找到原因,确实因为自己看程序不仔细,一直以为自己配置的FIFO未使能用的1位发送FIFO,后来发现TI那个串口库函数最后使能串口那个函数里面,使能了FIFO而导致发送数据小于1/2FIFO深度才能触发而不是我想的1个字节后就触发。
UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 115200, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); 这个函数就是配置串口的,如果只看到里面这个位置就以为未使能FIFO,
// // Set parity, data length, and number of stop bits. //
HWREG(ulBase + UART_O_LCRH) = ulConfig; // // Start the UART. //
其实函数最后一句(UARTEnable(ulBase); )打开了FIFO,我把里面打开FIFO的操作屏蔽就好了
void UARTEnable(unsigned long ulBase)
{
// // Check the arguments. //
ASSERT(UARTBaseValid(ulBase));
// // Enable the FIFO. //
//HWREG(ulBase + UART_O_LCRH) |= UART_LCRH_FEN;
// // Enable RX, TX, and the UART. //
HWREG(ulBase + UART_O_CTL) |= (UART_CTL_UARTEN | UART_CTL_TXE | UART_CTL_RXE); }
[ 本帖最后由 yg1982720 于 2012-2-29 13:53 编辑 ]