主题中讨论的其他器件: TM4C129ENCPDT
工具/软件:Code Composer Studio
您好!
我将 EK-TM4C129EXL 评估套件与 CCS 7.0配合使用
我需要将 一个段落(字符数组)从我的 PC 传输到控制器、反之亦然。 为此、我计划使用 UART 通信。
为了开始 UART 通信、我检查了 UART_echo 示例。 UART 中断处理程序中的代码如下所示:
while (ROM_UARTCharsAvail (UART0_BASE))
{
//
//从 UART 读取下一个字符并将其写回 UART。
//
ROM_UARTCharPutNonBlocking (UART0_BASE、ROM_UARTCharGetNonBlocking (UART0_BASE));
/*注释
//
//闪烁 LED 以显示字符传输正在发生。
//
GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、GPIO_PIN_0);
//
//延迟1毫秒。 每个 SysCtlDelay 大约为3个时钟。
//
SysCtlDelay (g_ui32SysClock /(1000 * 3));
//
//关闭 LED
//
GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、0);
*
}
首先、当我发送一个段落时、只有16到18个字符回显 并打印 在控制台屏幕上。
然后、我删除了 LED 闪烁逻辑、它在收到每个字符时通过注释进行闪烁。 现在、无论段落大小如何、整个段落都会得到回显和打印。 非常完美。
问题是、如果我再次尝试将传入字符存储 在 char 数组中、则只存储16 - 18个字符、并且非常不可靠。 我在 while 循环中使用以下代码将传入的数据存储在缓冲区中。
buf[i++]= ROM_UARTCharGetNonBlocking (UART0_BASE);
我需要收集数据并在主函数中进行处理。
有些人建议进行 缓冲操作。 我甚至使用 UARTgets ()函数尝试过它。 我做不到。
缓冲 UART 操作的编程示例或 UARTgets ()函数的示例将大有帮助。 或者、我是否可以在不执行缓冲操作的情况下实现它?
注意:该段落将从我的 PC 发送到一个部分。
感谢你能抽出时间。
