工具与软件:
你(们)好
我在超时 UART_READ 方面存在问题。
示例为 uart_echo:
在 DebugP_LOG 和 driverClose 之间的末尾添加了如下代码:
DebugP_LOG ("所有测试均已通过!\r\n ");
for (int i=0;i<30;i++)
{
trans.buf =&gUartReceiveBuffer[0U];
TRANS.COUNT = APP_UART_RECEIVE_BUFSIZE;
trans.timeout = 1000;
transferOK = UART_read (gUartHandle[CONFIG_UART_CONSOLE]、&TRANS);
DebugP_LOG ("读取%d ->确定=%d\r\n"、i、transferOK);
}
Board_driversClose ();
即~1秒的超时读取、串行在此处没有任何内容(使用简单的文本控制台发送回显示例所需的8个字符)。
控制台如下所示:
12345678
所有测试均已通过!!
读取0 ->正确=-1
读取1 ->正确= 0
读取2 ->正确= 0
读取3 ->正确= 0
基本上,我得到的是第一次尝试失败,然后我得到 SystemP_SUCCESS 无论我尝试了多少,它可以看到,只有第一次尝试等待1秒,然后它 几乎立即返回。
罪魁祸首似乎是 UART_v0.c 的这部分:
该函数的返回地址为0时、UART_LLD_readIntr 上的状态似乎为-1、该错误是正确的(必须超时)。
我是不是做错了什么? 超时不应与阻塞/中断一同工作?
此致、