漏发的问题,是你采用的函数不对,两个函数都是把你要发送的数据往发送FIFO写,一个是写满了后,就把后面的数据丢掉了,一个是写满后,会一直等待有空位后在往里面写。
你需要加一个UARTSpaceAvail(UART0_BASE))来判断FIFO是不是还有空间。
void MCU_UART0Printf(const char *pucBuffer,...)
{
char buf[MCU_UART0_TX_MAX_BUFF + 1u];
unsigned long len , i = 0;
va_list vArgs;
buf[0] = (char)0u;
va_start(vArgs, format);
vsnprintf(( char *)buf, sizeof(buf) - 1, ( const char*)pucBuffer, vArgs);
va_end(vArgs);
len = Str_Len(buf);
while(len)
{
if(UARTSpaceAvail(UART0_BASE))
{
/*Write the next character to the UART.*/
UARTCharPutNonBlocking(UART0_BASE, buf);
len--;
i++;
}
}
} |