Arduino - 告别手搓多任务,使用TaskScheduler协程库

概述

TaskScheduler是协作式多任务(任务调度)的轻量级实现,主要有以下特点:

  1. 任务周期性执行,执行频率以毫秒(默认)或微秒(如果显式启用)为单位;

  2. 支持设定执行次数(有限或无限次)

  3. 按预定义的顺序执行任务

  4. 支持任务执行参数的动态变化(频率、执行次数、回调方法)

  5. 支持在没有任务运行时进入睡眠模式以省电

  6. 支持事件驱动的任务调度

  7. 支持任务优先级

调度开销:每次调度 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);
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值