【问题标题】:xTimerIsTimerActive() for Periodic Timer in FreeRTOSxTimerIsTimerActive() 用于 FreeRTOS 中的定期定时器
【发布时间】:2017-04-06 15:18:13
【问题描述】:

我目前正在 Realtek Ameba 板上开发 FreeRTOS v8.1.2,并且我正在使用 IAR Embedded Workbench IDE。

我在使用 FreeRTOS 的 xTimerIsTimerActive() API 时遇到了一个奇怪的问题。 我有一个周期性定时器,对于这个周期性定时器,xTimerIsTimerActive() 总是返回 True,即使我通过调用 xTimerStop()xTimerDelete() 明确停止和删除定时器,实际上代码是以重复方式编写的。 但是xTimerIsTimerActive()即使没有创建定时器并且定时器句柄初始化为NULL也返回True。

抱歉,我无法在此处发布代码,因为它是专有的。

【问题讨论】:

    标签: timer freertos


    【解决方案1】:

    您只能在有效选项上调用 API 函数。如果您在已删除的 software timer 上调用 xTimerIsTimerActive(),则该对象不再有效且行为未确定。

    【讨论】:

    • 但如果我只是停止计时器而不删除它,它也会返回 true。
    • 好的,我开始了解 FreeRTOS 的 Timer API 的行为。 xTimerIsTimerActive() 仅适用于已过期的单次计时器,不适用于已停止的周期性计时器。
    猜你喜欢
    • 2019-07-07
    • 2019-05-30
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2018-07-13
    • 1970-01-01
    相关资源
    最近更新 更多