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.

[参考译文] CC1352P:EasyLink_setFrequency 始终返回 EasyLink_Status_BUSY_Error (SDK 6.10)

Guru**** 2483615 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1203463/cc1352p-easylink_setfrequency-always-returns-easylink_status_busy_error-sdk-6-10

器件型号:CC1352P

我在6.10 SDK 上,我正在尝试使用 EasyLink_setFrequency 函数来动态更改频率。

可悲的是,该函数总是返回 EasyLink_Status_Busy_Error ,并使用以下代码:

    //Check and take the busyMutex
    if (Semaphore_pend(busyMutex, 0) == false)
    {
        return EasyLink_Status_Busy_Error;
    }

我该怎么办?

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

    Michael、您好!  

    我看到所有 API 都使用 busyMutex。 基本上、如果要执行 EasyLink_Transmit 或任何其他命令、此 if 语句只检查一次、没有超时、立即返回、而不进行阻止。  

    您可以重新提交命令、直到成功。 或者、你可以给该 API 的 Semaphore_pend 添加一个超时。  

    https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/docs/tirtos7/doxygen/m4/html/Semaphore_8h.html#ac7e0b45f15b2f6f5a7e4ecc772ddbd0c

    此超时将阻止此 API 的返回、直到您获得信标。 当然、您需要考虑这可能在您的应用中导致的时序复杂性。  

    此致、

    SID

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

    是的、我试过、但信标永远不会被布置、所以代码永远等待

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

    您需要检查将互斥量保存在应用程序中的实际正在执行哪个 API。 您处于 RX 模式、在没有指定结束时间的情况下等待数据。