UARTFIFODISable(UART0_BASE); 开始的时候我禁能了UART0 FIFO。然后用uart_echo的例程调试程序。发现本来串口工具应该出现Enter test: 字符串的 到后来只发送了2个字节En我把断点设置在函数UARTSend里面的UARTCharPutNonBlocking这一行。如果是全速运行UARTCharPutNonBlocking会返回false。单单按下F10的话 ,字符串Enter test: 显示正常我跟踪进去,发现驱动是把要发送的字符串放到发送的16字节FIFO里面。由于能力不足,只能跟踪到这步,请大侠们指点迷津。为什么只发送了2字节,就返回false
此帖出自
小平头技术问答
UARTSend(const unsigned char *pucBuffer, unsigned long ulCount)
{
//
int flag = 0;
// Loop while there are more characters to send.
//
while(ulCount)
{
//
// Write the next character to the UART.
//
if((flag = UARTCharPutNonBlocking(UART0_BASE, *pucBuffer)) == 1)
{
pucBuffer++;
ulCount--;
}
}
}
我把串口发送函数改写成上面这样。发现可以了。
个人理解是我设置的波特率为115200。发送一个字节大概是80us。当串口发送FIFO卡主的时候,程序仍然进行ulCount--
一下子函数就结束了。。所以只发送了2字节~~
希望大家一起研究下~~
送 FIFO 中没有可用的空间,则函数返回 False,应用迟点将会再尝试执行这个函数。
一周热门 更多>