TaskScheduler
TaskScheduler
ESP32
3/5
🧩 软硬件结合
已发布
项目简介
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()` 进行时间管理的复杂代码
资源受限的嵌入式系统,需要轻量级调度方案
从简单原型过渡到更复杂多任务系统的项目
需要精确时序控制且避免并发问题的工业/商业嵌入式产品