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.

[参考译文] RTOS/CC3200SDK:UART 阻塞模式读取超时

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/619048/rtos-cc3200sdk-uart-blocking-mode-read-timeout

器件型号:CC3200SDK

工具/软件:TI-RTOS

您好!

我发现 UART 阻塞模式读取超时有一些困难。

对于 UART 阻塞模式读取,函数为 UARTCharGE(),该函数中的参数仅用于传递基址。

是否可以修改此函数、以便可以将超时添加到此函数、或者是否有任何其他方法可用于超时 UART 阻塞模式读取。

谢谢、此致、  

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

    我将研究这个问题、并在星期一返回给您。

    谢谢、

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

    您好!

    您应该使用非阻塞功能并在其中添加自己的超时、如下所示:

    while (timeout--){
    c = UARTCharGetNonBlocking ();
    if (c!=-1) return c;
    sleep (1);
    }
    

    1月

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

    感谢您的回复。

    对于 UARTCharGetNonBlocking()函数,需要 UART ISR,因此我要将 UART ISR 修改为应用程序目的,因为我想使用超时的 UARTCharGE()函数。

    无法实现阻塞模式超时?

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

    您好!

    不需要、UARTCharGetNonBlocking()对 UARTISR 来说不是必需的。 只需比较 UARTCharGetNonBlocking ()和 UARTCharGet ()的代码:

    long UARTCharGetNonBlocking (unsigned long ulBase)
    {
    //
    //检查参数。
    //
    assert (UARTBaseValid (ulBase));
    
    //
    //查看接收 FIFO 中是否有任何字符。
    //
    if (!(HWREG (ulBase + UART_O_FR)& UART_FR_RXFE))
    {
    //
    //读取并返回下一个字符。
    //
    return (HWREG (ulBase + UART_O_DR));
    }
    其他
    {
    //
    //没有字符,因此返回失败。
    //
    return(-1);
    }
    } 
    long UARTCharGet (unsigned long ulBase)
    {
    //
    //检查参数。
    //
    assert (UARTBaseValid (ulBase));
    
    //
    //等待 char 可用。
    //
    while (HWREG (ulBase + UART_O_FR)和 UART_FR_RXFE)
    {
    }
    
    //
    //现在获取 char。
    //
    return (HWREG (ulBase + UART_O_DR));
    } 

    1月

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

    感谢您的回复、这将解决我的问题。

    谢谢、此致