工具/软件:
大家好!
我使用在轮询模式下配置的 UART 实例从终端读取输入。 我使用 HTerm 作为终端、而不是 CCS 的集成终端。
我有一个简单的应用程序、我使用 DebugP_readline (指向缓冲区的指针、100u)读取输入、可以观察到 UART_readPolling 处于其读取循环中。
现在、我 通过 HTerm 发送带有回车字符的"foo"。 我可以看到缓冲区中填充了我的输入、但应用程序在轮询读取循环中将永远挂起。
该问题是由函数 uart_fifoRead 中的 uart_V0_LLD.c (来自 MCU+ SDK v10.00.00.20)中的错误引起的:
1.循环检查0 != readSizeRemaining
2. readSizeRemaining 从不在循环内更新,只有 tempReadSizeRemaining 是。 因此、在这种情况下环路永远不会断开
因为我读取输入 DebugP_readline、 readSizeRemaining 将为1、因为它想要按字符读取输入字符:
1. uart_fifoRead 返回(大小- tempReadSizeRemaning)
2.因为 HTerm 总共发送了4个字符的输入字符串、返回值已下溢
3. 尽管已成功读取所有内容、但 UART_readPolling 从不返回。
我想 CCS 终端在每次击键后都会发送输入、这与 HTerm 不同、因为它从不会显示此错误。