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:周期性时钟停止工作

Guru**** 2577385 points
Other Parts Discussed in Thread: CC2650MODA, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/612364/rtos-periodic-clock-stopping-working-on

主题中讨论的其他器件:CC2650MODACC2650

工具/软件:TI-RTOS

各位专家、您好!

我正在为 CC2650MODA 编写代码 、并从 simple_peripheral_cc2650lp 示例开始。  我能够打开和关闭 GPIO、但我发现、当我关闭广播时、情况会停止工作。 具体而言、我签署了以下代码:      

uint8_t advertEnabled = false;

GAPRole_SetParameter (GAPROLE_adverted_enabled、sizeof (uint8_t)、advertEnabled);

在"IF (事件和 SBP_Periodical_EVT)"部分内执行此代码后、周期性事件(我设置为5秒)停止工作。 如果我将广播保持在打开状态、它将保持正常工作、并且我可以每5秒看到一次周期性事件(我打开和关闭 LED)。

我注意到、sensortag cc2650中不存在此行为、但我现在需要使其适用于 CC2650MODA。

如何解决此问题?

非常感谢您的观看、

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

    在默认的 simple_peripheral 中、与 SBP_PERTIFY_EVT 关联的时钟/计时器仅在 LE 连接期间运行。 因此、我不确定您所做的更改。 我建议检查您的代码、以查看您在哪些条件下停止时钟或不重新启动时钟。 如果我不得不推测、我会说这与你在 ADV 结束时如何处理 GAPROLE 状态转换有关。

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

    您好、JXS、

    感谢您的回复。 以下是我在 SimpleBLEPeripheral_taskFxn 中执行的代码:

    IF (事件和 SBP_Periode_EVT)
       {
         事件&=~SBP_Periode_EVT;
         Util_startClock (周期时钟);


         Util_restartClock (周期时钟、5000);
         如果(var ==0){
             PIN_setOutputValue (hGpioPin、Board_RLED、Board_LED_ON);
             uint8_t advertEnabled = true;
             //启用可连接广播。
             GAPRole_SetParameter (GAPROLE_adverted_enabled、sizeof (uint8_t)、advertEnabled);
         }
         否则{
             PIN_setOutputValue (hGpioPin、Board_RLED、Board_LED_OFF);
             uint8_t advertEnabled = false;
             //启用可连接广播。
             GAPRole_SetParameter (GAPROLE_adverted_enabled、sizeof (uint8_t)、advertEnabled);
             Util_startClock (周期时钟);
             Util_restartClock (周期时钟、5000);
         }

         VAR_;
         如果(var>1)
             VAR = 0;
       }

    因此、如果我在 else 条件内设置 advertEnabled = true、则周期性事件每5秒持续发生一次、但如果我设置 false、周期性事件将停止。 当 ADV 结束时钟停止时、如何检查 GAPROLE 状态转换的位置? 您能帮助我了解检查位置以及如何解决此问题吗? 即使我停止通告、我也需要定期事件继续发生。

    非常感谢你能抽出时间