RTOS 时间管理篇-含信号处理功能的周期性任务

RTOS 时间管理篇-含信号处理功能的周期性任务

概述

一些周期性任务的运行是需要响应一些外部事件的。比如,用两个按钮来分别控制周期性任务的启动和停止。由启动按钮来创建定时任务,创建后的定时任务自动周期性的运行。停止按钮向定时任务发送信号,任务得到信号后就将自己删除。

这种含信号处理功能的定时周期任务可以实现双重目的:

1)在没有获取到信号时,其超时等待机制其道控制运行周期的作用( 与 vTaskDelay()类似),实现周期运行某项功能。

2)当收到信号时,可以及时处理信号,完成如状态切换、终止任务的功能。

这种需求可以使用通信组件的超时机制来实现。如下通过设置 xSemaphoreTake() 的超时时间为 1s 来实现周期为 1 s 的一个周期任务。当收到信号的情况下,会立即执行 break语句

static void task1_process(void *arg)
{
   
    
    
    static <

猜你喜欢

转载自blog.csdn.net/wangyx1234/article/details/128442506