RTOS 时间管理篇-含信号处理功能的周期性任务
概述
一些周期性任务的运行是需要响应一些外部事件的。比如,用两个按钮来分别控制周期性任务的启动和停止。由启动按钮来创建定时任务,创建后的定时任务自动周期性的运行。停止按钮向定时任务发送信号,任务得到信号后就将自己删除。
这种含信号处理功能的定时周期任务可以实现双重目的:
1)在没有获取到信号时,其超时等待机制其道控制运行周期的作用( 与 vTaskDelay()类似),实现周期运行某项功能。
2)当收到信号时,可以及时处理信号,完成如状态切换、终止任务的功能。
这种需求可以使用通信组件的超时机制来实现。如下通过设置 xSemaphoreTake()
的超时时间为 1s 来实现周期为 1 s 的一个周期任务。当收到信号的情况下,会立即执行 break语句
:
static void task1_process(void *arg)
{
static <