工具/软件:Code Composer Studio
我对"UART_ECHO.c"示例中的"UARTSend"函数有一个奇怪的问题。 出于某种原因、我通过 UART 发送命令"info"时收到的响应被截断。
我应该回来:
{\"版本\":\"1.0\"、\"id\":\"37826342234\"}
但我得到的只是这样的结果:
{"版本":"1.0"
当我使用"UARTSend"循环内的断点执行 char by char 操作时、它会返回完整的字符串。 这里可能需要延迟?
以下是我的 UARTSend 和 UARTIntHandler:
空 UARTSend (const uint8_t * pui8Buffer、uint32_t ui32Count)
{
//
//循环,同时有更多字符要发送。
//
while (ui32Count---)
{
//
//将下一个字符写入 UART。
//
ROM_UARTCharPutNonBlocking (UART0_BASE、* pui8Buffer++);
}
}
我使用以下 UART 中断处理函数:
空 UARTIntHandler (空)
{
uint32_t ui32Status;
//
//获取中断状态。
//
ui32Status = ROM_UARTIntStatus (UART0_BASE、TRUE);
//
//清除已发出的中断。
//
ROM_UARTIntClear (UART0_BASE、ui32Status);
//
//在接收 FIFO 中有字符时循环。
//
字符 b[5];
int i = 0;
while (ROM_UARTCharsAvail (UART0_BASE))
{
//
//从 UART 读取下一个字符并将其写回 UART。
//
B[i]= ROM_UARTCharGetNonBlocking (UART0_BASE);
i++;
}
if (strstr (b、"info"))
{
CHAR*响应="{\"版本\":\"1.0\"、\"id\":\"37826342234\"}";
UARTSend (响应、strlen (响应));
}
}