TaskScheduler:一个为Arduino、ESPx、STM32和其他微控制器设计的轻量级协作式多任务调度库

TaskScheduler是一个为Arduino、ESPx、STM32和其他微控制器设计的轻量级协作式多任务调度库。它提供了一种比抢占式编程和FreeRTOS等框架更简单易用的替代方案,让您轻松实现多任务处理,无需深陷并发编程的陷阱。

一、 协作式多任务的优势

TaskScheduler采用协作式多任务处理模式。这意味着任务在运行时会主动放弃CPU控制权,从而避免了抢占式多任务可能出现的竞态条件、死锁、活锁以及资源共享等复杂问题。 协作式多任务简化了开发流程,降低了出错的概率,特别适合资源受限的微控制器环境。

二、 主要功能与特性

TaskScheduler拥有丰富的功能,旨在满足各种微控制器多任务编程的需求:

  • • 灵活的任务调度: 支持周期性任务执行,可动态调整任务执行周期(毫秒或微秒)。可以设置任务执行的迭代次数(有限或无限)。

  • • 自定义任务序列: 允许以预定义的顺序执行任务。

  • • 动态参数调整: 运行时可动态修改任务的执行参数,例如频率、迭代次数和回调方法。

  • • 节能机制: 当没有任务需要运行时,系统会进入IDLE休眠模式,节省功耗。

  • • 事件驱动: 通过状态请求对象支持事件驱动型任务调用。

  • • 错误处理与监控: 支持任务ID和控制点,方便错误处理和看门狗定时器集成。

  • • 本地任务存储: 支持本地任务存储指针,允许使用相同的回调代码为多个任务服务。

  • • 分层优先级: 支持分层任务优先级,实现任务间的优先级调度。

  • • 标准函数支持: 支持std::function (在 ESPx 和 STM32 上测试)。

  • • 任务超时机制: 设置全局任务超时时间。

  • • 静态和动态回调绑定: 支持静态和动态回调方法绑定,灵活配置任务回调函数。

  • • CPU负载统计: 提供CPU负载/空闲状态统计信息,方便时间关键型应用的性能分析。

  • • 多种调度策略: 提供多种调度策略,包括优先级调度(包含和不包含追赶机制)和时间间隔调度。

  • • 暂停/恢复与启用/禁用: 允许暂停/恢复和启用/禁用任务调度。

  • • 线程安全: 在抢占式调度器(例如FreeRTOS)下运行时保证线程安全。

  • • 动态任务自销毁: 支持动态创建的任务在禁用时自动销毁。

  • • FreeRTOS下”tickless”执行: 在FreeRTOS下支持”tickless”执行,在下一个计划任务调用之前持续休眠。

  • • 低调度开销: 在Arduino UNO rev 3 (16MHz)上,每次调度开销在15到18微秒之间(单调度器,无优先级)。

三、 支持的平台

TaskScheduler经过广泛测试,兼容多种微控制器平台:

  • • Arduino Uno R3

  • • Arduino Nano

  • • Arduino Micro

  • • ATtiny85

  • • ESP8266

  • • ESP32

  • • Teensy (Teensy 3.5测试版)

  • • nRF52 (nRF52832测试版)

  • • nRF52 Adafruit Core (nRF52840测试版,v3.6.2兼容性处理)

  • • STM32 (Mini USB STM32F103RCBT6 ARM Cortex-M3 leaflabs Leaf maple mini module F测试版)

  • • MSP430 和 MSP432 芯片

  • • Raspberry Pi (需要外部Arduino.h和millis()实现)

四、总结

TaskScheduler 为Arduino等微控制器提供了强大的、易于使用的协作式多任务调度功能。其轻量级的特性和丰富的功能使其成为各种嵌入式应用的理想选择。无论是简单的定时任务,还是复杂的事件驱动系统,TaskScheduler 都能有效地简化开发流程,提高代码质量,并释放微控制器的潜能。

项目地址:https://github.com/arkhipenko/TaskScheduler


原文始发于微信公众号(DIY太阳系):TaskScheduler:一个为Arduino、ESPx、STM32和其他微控制器设计的轻量级协作式多任务调度库

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/307542.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!