This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TM4C1294NCPDT:即使 UARTCharsAvail ()为 false、也会持续打印 UART。

Guru**** 2448780 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/622941/ccs-tm4c1294ncpdt-uart-prints-continuously-even-if-uartcharsavail-is-false

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

大家好、

请帮帮我。 我正在编写一个代码、在该代码中、我检查 UART 接收缓冲区中是否有任何数据、如果 为真、则在 TX 上打印输出。  

以下是一段代码:

while (1)
{

IF (UARTCharsAvail (UART7_BASE))
{
UARTprintf ("接收到的数据\n");
}
} 



我遇到的上述代码问题是、一旦我在 RX 上发送字符、"Data Received"就会在 TX 上持续打印。 在我看来、即使没有任何字符被发送到 RX、if 语句也是正确的。

如果有人能给我指正确的方向、那将会非常有帮助。 TIA

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在上面的代码中、您永远不会从接收 FIFO 中读取字符、这样它将继续具有可用的字符。 函数 UARTCharsAvail()不会清空接收 FIFO,而只是报告状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bob、您好!

    感谢您的建议。 这似乎起作用。 但是、我想知道是否有办法使用内置库 API 来清除 FIFO 缓冲区、而不是每次读取数据。  

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Prabhav、

    没有用于清除 UART FIFO 的功能。 如果您想要一个、这很简单

    while (UARTCharsAvail (base){UARTCharGet (base);}

    但是、如果您不需要数据、只需忽略它-例如、禁用中断-连接串行端口输入太有意义、然后不想听到它...

    顺便说一下、在开发过程中、您是否在 PC 上打开了 TivaWare 用户指南? 第30.2章显示了所有可用的 UART 功能。

    此致

    布鲁诺

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    正如海报 Bruno 所建议的-"豪华的第二台显示器"(持续展示 DRL 用户指南)节省了大量时间和精力...

    其中资源排除-没有任何内容阻止用户"打印" API 函数(基于"按外设")并将该打印输出保持在附近...