【问题标题】:How to stop a freertos timer and start it again without resetting the current tick count to 0如何在不将当前滴答计数重置为 0 的情况下停止 freertos 计时器并重新启动它
【发布时间】:2020-03-23 09:14:45
【问题描述】:

我正在 freertos 中创建一次性 xTimer。一段时间后,我想停止它然后重新启动它,但不重置滴答计数。 因此,例如,周期为 10 秒,5 秒后我停止计时器,如果我再次启动计时器,我希望在 5 秒后调用回调。 目前,当我再次启动计时器时,它会重置,并在 10 秒后收到回调。

我错过了什么吗?

【问题讨论】:

  • 您可以将剩余时间存储在计时器中,停止它,然后在需要时使用存储的值重新加载它..

标签: timer freertos


【解决方案1】:

是的,如果您重置计时器而不更改其周期;计时器将在xTimerCreate() 中初始化的时间段内运行。您应该首先获得此计时器的剩余时间,然后才停止。然后你可以做任何你需要的事情,然后在剩下的时间打电话给xTimerChangePeriod()。

TickType_t timeLeft;

timeLeft = xTimerGetExpiryTime(myTimer) - xTaskGetTickCount();
xTimerStop(myTimer);

// Do some work

xTimerChangePeriod((myTimer, timeLeft, 1000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    相关资源
    最近更新 更多