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.

[参考译文] CC2651R3SIPA:如何创建 RTC 回调函数

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1495689/cc2651r3sipa-how-to-create-rtc-callback-function

器件型号:CC2651R3SIPA

工具与软件:

尊敬的专家:

我想使用 RTC 创建一个每10分钟唤醒一次的功能。

我通过参考几个 e2e 论坛实现了如下所示、但似乎没有调用 RTC 回调。

您能指出一下错误吗?

void AON_RTChandling_createTask (void)

 setupRTC();
}

void setupRTC (void){

AONRTCDisable ();
AONRTCReset();
AONRTCEventClear (AON_RTC_CH0);

AONRTCCompareValueSet (AON_RTC_CH0、AONRTCCurrent64BitValueGet ()+ RTC_INTERVAL_TICKS);
IntPendClear (INT_AON_RTC_COMB);
AONRTCChannelEnable (AON_RTC_CH0);
AONRTCEnable();
AONRTCCombinedEventConfig (AON_RTC_CH0 | AON_RTC_CH1 | AON_RTC_CH2);

//AONEventMcuWakeUpSet (AON_EVENT_MCU_WU0、AON_EVENT_RTC_CH1);

HwiP_Params hwiParams;
Hwip_Params_init (&hwiParams);
hwiParams.priority = 1;
Hwip_create (INT_AON_RTC_COMB、rtcCallback、&hwiParams);

HWIP_enableInterrupt (INT_AON_RTC_COMB);

GPIO_setConfig (CONFIG_TEST_LED、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_HIGH);

}

void rtcCallback (uintptr_t arg){
dispHandle = Display_open (Display_Type_ y、NULL);
Display_printf (dispHandle、0、0、" rtcCallback ");

AONRTCEventClear (AON_RTC_CH0);

GPIO_TOGGLE (CONFIG_TEST_LED);

uint32_t nextTick = AONRTCCurrentCompareValueGet ()+ rtc_interval_ticks;
AONRTCCompareValueSet (AON_RTC_CH1、nextTick);

HWIP_clearInterrupt (INT_AON_RTC_COMB);
}

谢谢  

B.R.

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

    您好、Moon、

    我希望你做得好,我会努力进一步研究你的问题,并在我身边重新讨论一些事情。

    谢谢!
    Alex F

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

    您好、Moon、

    我想问一下我们是否可以使用 TimerPCC26XX_nortos.c 中的计时器外设来提供帮助? 话虽如此、此计时器函数会执行与您的实现非常相似的步骤。  

      /*将当前时间添加到比较值、以防它不是0 */
      compare += AONRTCCurrentCompareValueGet ();

      /*清除通道0上的事件*/
      AONRTCEventClear (AON_RTC_CH0);

      /*在 RTC 中设置比较值*/
      AONRTCCompareValueSet (AON_RTC_CH0、比较);

      /*启用比较通道0 */
      ANEventMcuWakeUpSet (AON_EVENT_MCU_WU0、AON_EVENT_RTC0);

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

    您好、Alex。

    感谢您的答复。

    我在您发送给我的来源上看不到针对 RTC 事件的回调函数。

    请告诉我如何实现偶数回调或中断处理程序。

    我们必须使用 RTC 进行唤醒、然后执行某些操作。

    谢谢

    B.R.

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

    您好、B.R

    我们应该能够使用此处的计时器函数、并且每秒有一个全局递增。 可表示为:

    Timer_Handle    handle;
    Timer_Params    params;
    Timer_Params_init(&params);
    params.periodUnits = Timer_PERIOD_HZ;
    params.period = 1;
    params.timerMode  = Timer_CONTINUOUS_CALLBACK;
    params.timerCallback = UserCallbackFunction;
    handle = Timer_open(CONFIG_TIMER0, &params);
    if (handle == NULL) {
        // Timer_open() failed
        while (1);
    }
    status = Timer_start(handle);
    if (status == Timer_STATUS_ERROR) {
        //Timer_start() failed
        while (1);
    }
    sleep(10000);
    Timer_stop(handle);

    谢谢!
    Alex F

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

    您好、Alex

    您向我发送的回调函数是针对通用计时器的设置。

    请告诉我如何设置 RTC 回调和 RTC 配置。

    谢谢

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

    你好、Robin、

    我发现以下主题讨论了类似的主题(RTC 唤醒)、这在设置版本时应该会很有用:

    https://e2e.ti.com/f/1/t/884941/

    谢谢!
    Alex F