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.

[参考译文] CCS/CC1352R:在具有 TI-RTOS 的 SimpleLink SDK 中、RTC 计时器溢出回调在哪里?

Guru**** 2535150 points
Other Parts Discussed in Thread: CC2652P

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/928183/ccs-cc1352r-where-is-rtc-timer-overflow-callback-in-simplelink-sdk-with-ti-rtos

器件型号:CC1352R
主题中讨论的其他器件:CC2652P

工具/软件:Code Composer Studio

您好!

我使用 SimpleLink SDK v4.20、CC2652P、CCS v10.1。

这是我的时钟配置。

该时钟的节拍周期为10us、在 TI-RTOS 上运行良好。

时钟是32位的、所以当定时器从0开始计数到满时、花费0xFFFFFFFF * 10us、这大约是12小时。 在定时器进入0xFFFFFFFF 后、它进入0。

我的应用软件需要知道定时器何时从0xFFFFFFFF 溢出到0、并且我找不到这个"溢出回调"。

那么、我的问题是如何知道计时器何时溢出?

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

    您好、Yingtao、

    指派专家进行评论。  

    谢谢、  
    ELIN  

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

    您好、Yingtao、

    由于时钟模块本身不能溢出、因此没有溢出回调。 时钟模块允许您设置一个最多为0xFFFFFFFF - 1个节拍而不是更多节拍的定时器。 一旦它达到您指定的数字、它将为您提供回调、然后它将再次停止或重新启动、具体取决于您的配置方式。 这意味着、例如、如果您设置一个周期性的"1000个节拍"时钟、它将计数到1000、调用 CB、并从0开始再次启动、直到溢出才会继续。

    我是否可以问您在应用中为什么需要这种方法?

    此致、

    最大

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

    我使用此代码进行测试。

    //时钟回调

    无效 myClockA (UArgarg1)

      Semaphore_post (gSem);

    //代码块

    Clock_Params_init (&clockParams);
    clockParams.period = 0;// 0是默认值、但为了实现完整性而添加
    clockParams.startFlag = true;
    clockParams.arg ='a';

    clockHandle = Clock_create (myClockA、2000*100、clockParams、NULL);

    Semaphore_pend (gSem、BIOS_wait_forever);

    Debug_printf ("开始测试"\n);

    while (1)

      now_time = Clock_getTicks();

      debug_printf ("现在时间:%u\n"、now_time);

      delay_ms (1000);

    我创建时钟 A、设置间隔2。 触发回调后、打印"Start Test"、然后每1秒读取一次时钟计数。

    结果如下:

    因此、根据结果、时钟持续运行、它不会停止。

    我想它将保持运行、直到计数达到0xFFFFFFFF、当发生这种情况时、应该会出现溢出回调等情况。

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

    您好、Yingtao、

    Clock_getTicks()与您创建的时钟对象无关。 Clock_getTicks()返回缩放到时钟模块域的当前 RAT 时间,但不返回内部“时钟计时器”值。 当您创建"myClockA"时、不会启动计时器(除非您设置了"START Now"标志)。 当您发出"Start myClockA"时、将捕获当前时间(使用 Clock_getTime())、并将 RTC 通道配置为与时钟对象超时值匹配。  

    基本上、时钟是一个 RTC 包装器、它使用永久运行的 RTC、并且没有内部计时器。 如果您正在寻找 RTC 周期、则可以使用 RTC DriverLib 函数(请注意、您只能使用"GetValue"、而不用考虑内核预期拥有 RTC 模块的配置):

    dev.ti.com/.../group__aonrtc__api.html