概述
TaskScheduler是协作式多任务(任务调度)的轻量级实现,主要有以下特点:
-
任务周期性执行,执行频率以毫秒(默认)或微秒(如果显式启用)为单位;
-
支持设定执行次数(有限或无限次)
-
按预定义的顺序执行任务
-
支持任务执行参数的动态变化(频率、执行次数、回调方法)
-
支持在没有任务运行时进入睡眠模式以省电
-
支持事件驱动的任务调度
-
支持任务优先级
调度开销:每次调度 15 到 18 微秒(Arduino UNO rev 3 @ 16MHz 时钟,没有优先级的单个调度程序)
基本用法
/**
* TaskScheduler 测试
* 初始化时,task1和task2是激活的
* task1 间隔2s,运行10次后停止
* task2 间隔3s,一直运行
* task1 第一次运行时激活task3
* task3 间隔5s,一直运行
* task1 最后一次运行时关闭task3,并将task2的运行间隔设置为1/2s
*/
#include <TaskScheduler.h>
// 声明回调函数,即任务实际执行的代码
void t1Callback();
void t2Callback();
void t3Callback();
// 定义任务
Task t1(2000, 10, &t1Callback); //任务名称t1,间隔2000ms,总共执行10次,执行的代码为t1Callback()
Task t2(3000, TASK_FOREVER, &t2Callback);