TaskScheduler TaskScheduler

ESP32 3/5 🧩 软硬件结合 已发布
arkhipenko 1144 Stars 未知 BOM 完整度: 0/5 教程完整度: 0/5
TaskScheduler

项目简介

Cooperative multitasking for Arduino, ESPx, STM32, nRF and other microcontrollers


TaskScheduler 是一个专为 Arduino、ESP8266、ESP32、STM32 等微控制器设计的轻量级协作式多任务调度库,当前版本为 4.0.8。它的核心价值在于提供一种比 FreeRTOS 等抢占式框架更简单、更安全的多任务处理方式。通过协作式调度,任务主动让出 CPU 控制权,从根本上避免了并发编程中常见的竞态条件、死锁和资源竞争问题,让开发者无需深入复杂的并发理论即可构建可靠的嵌入式系统。

标签

项目特点

**协作式多任务调度**:无需担心并发问题,任务按顺序执行,天然避免竞态和死锁
**灵活的周期性执行**:支持毫秒或微秒级动态周期,可设置有限或无限次迭代
**动态任务管理**:运行时动态更改任务频率、迭代次数和回调函数
**事件驱动调用**:通过状态请求对象触发任务执行
**电源优化**:支持 IDLE 休眠模式,无任务时自动进入低功耗状态
**CPU 负载统计**:提供任务调度开销和空闲时间统计,适用于时间关键型应用
**多平台支持**:兼容 Arduino、ESP8266/ESP32、STM32、Teensy、nRF、MSP430、树莓派等
**线程安全**:可在 FreeRTOS 等抢占式调度器下安全运行
**丰富的回调绑定**:支持静态、动态回调方法和 std::functions

技术规格

调度开销 15-18 微秒/次(Arduino UNO @16MHz,单调度器无优先级)
时间精度 毫秒(默认)或微秒
最大任务数 取决于可用内存
迭代模式 TASK_FOREVER 或有限次数
回调绑定 静态方法、动态方法、std::functions
平台支持 Arduino Uno/Nano/Micro, ATtiny85, ESP8266, ESP32, Teensy 3.5, nRF52832/52840, STM32F103, MSP430, MSP432, 树莓派, Linux
许可证 BSD 3-Clause

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
TaskScheduler 库 1 从 Arduino 库管理器或 GitHub 安装
Arduino/ESP/STM32 开发板 1 任意支持的平台
LED 1 用于示例演示
电阻(220Ω) 1 LED 限流
跳线 若干 连接电路

能力画像

⚪ 记忆与知识检索: 2/5
🔵 逻辑推演: 3/5
⚪ 表达与交流: 1/5
⚪ 感知与观察: 2/5
⚪ 数理与计算: 3/5
🔧 动手与操作: 3/5
⚪ 狂热与坚持: 2/5
⚪ 创造与创新: 3/5

视频

所需技能

🔧 **动手能力**:能够连接 LED 和传感器到开发板,搭建简单电路 💻 **编程能力**:熟悉 C/C++ 基础,了解 Arduino 编程框架,能编写回调函数 ⚡ **电子电路**:了解基本电子元件(LED、电阻、传感器)的连接方式

适用场景

需要同时运行多个周期性任务(如 LED 闪烁、传感器读取、串口通信)的 Arduino 项目
替代手动使用 `millis()` 进行时间管理的复杂代码
资源受限的嵌入式系统,需要轻量级调度方案
从简单原型过渡到更复杂多任务系统的项目
需要精确时序控制且避免并发问题的工业/商业嵌入式产品