我有一个特定的任务例程,它以特定的顺序执行一些操作,这些操作处理一些易失性变量。有一个特定的中断可以异步更新这些易失性变量。因此,如果发生这样的中断,任务例程应该重新启动。通常 FreeRTOS 会恢复任务,但这会导致错误的派生值,因此需要重新启动例程。我也不能将任务例程保持在关键部分,因为我不应该错过任何中断。
FreeRTOS 中有没有一种方法可以实现这一目标?就像一个 vtaskRestart API。我本可以删除该任务并重新创建它,但这会增加很多内存管理的复杂性,我想避免这种情况。目前我唯一的选择是在例程中添加对标志的检查,以查看是否发生了上下文切换,如果是,则重新启动,否则继续。
谷歌搜索没有得到任何线索。似乎人们从未遇到过这样的问题,或者可能是这种设计很差。在 FreeRTOS 论坛中,很少有人要求重新启动任务似乎没有同样的问题。stackOverflow 在 freertos + 任务 + 重启时没有结果。所以,这可能是第一篇使用这个标签组合的帖子;)
有人可以告诉我这在 FreeRTOS 中是否可以直接实现吗?