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.

[参考译文] TM4C129ENCPDT:TIRTOS UART 驱动程序溢出行为

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162886/tm4c129encpdt-tirtos-uart-driver-overrun-behavior

器件型号:TM4C129ENCPDT

在阻塞模式(`UART_MODE_BLOCKING`)下使用 TIRTOS UART 驱动程序时、我有几个问题涉及 TIRTOS UART 驱动程序的行为

1) 1)`uart_read()`文档显示“在 UART_MODE_Blocking 中,UART_read()阻止任务执行,直到已读取缓冲区中的所有数据” 。 以下哪个缓冲区是指的文档:

  a)驱动程序的循环缓冲器;或

  b)用户在`UART_READ()`调用中作为参数提供的缓冲区?

2) 2) 如果在`uart_read()`调用之间发生溢出、会发生什么情况?  缓冲区是被覆盖还是新数据被丢弃? 是否有建议的方法来测试此类超限?

3)在换行模式(`UART_READ()`调用中被阻止(`UART_RETURE_NEWLINE`)时、如果在没有接收到换行的情况下填充缓冲区会发生什么情况?

提前感谢。

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

    您好!

     我不是 TI-RTOS 专家。 话虽如此、以下是我的答案。  

    [引用 userid="380224" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162886/tm4c129encpdt-tirtos-uart-driver-overrun-behavior "]

    1) 1)`uart_read()`文档显示“在 UART_MODE_Blocking 中,UART_read()阻止任务执行,直到已读取缓冲区中的所有数据” 。 以下哪个缓冲区是指的文档:

      a)驱动程序的循环缓冲器;或

      b)用户在`UART_READ()`调用中作为参数提供的缓冲区?

    [/报价]

    我认为这是 用户提供的缓冲区。  

    [引用 userid="380224" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162886/tm4c129encpdt-tirtos-uart-driver-overrun-behavior "]

    2) 2) 如果在`uart_read()`调用之间发生溢出、会发生什么情况?  缓冲区是被覆盖还是新数据被丢弃? 是否有建议的方法来测试此类超限?

    [/报价]

    从硬件的角度来看、数据会丢失。  

    [引用 userid="380224" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162886/tm4c129encpdt-tirtos-uart-driver-overrun-behavior "]

    3)在换行模式(`UART_READ()`调用中被阻止(`UART_RETURE_NEWLINE`)时、如果在没有接收到换行的情况下填充缓冲区会发生什么情况?

    [/报价]

    [引用 userid="380224" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1162886/tm4c129encpdt-tirtos-uart-driver-overrun-behavior "]

    3)在换行模式(`UART_READ()`调用中被阻止(`UART_RETURE_NEWLINE`)时、如果在没有接收到换行的情况下填充缓冲区会发生什么情况?

    [/报价]

    下面是说明。  您是否正在使用  UART_DATA_TEXT? 根据我的解释、如果您处于 UART_DATA_TEXT 模式、并且缓冲区在没有接收到换行的情况下被填满、则它将继续阻止。