本项目介绍了一种用于Arduino的任务调度机制,使单片机能够在同一时间处理多个独立任务,提高系统效率与响应能力。
这是适用于带有 ATmega328p 微控制器的 Arduino 任务调度程序的设计方案。受启发于某些经典设计。
需要注意的是:此库在 ATmega328p 上使用定时器1,因此可能与需要使用相同定时器的一些其他库不兼容(例如针脚9和10上的analogWrite())。
如何使用?
步骤一:
将 Sch.init(); 和 Sch.start(); 放入 void setup() 函数中,并在 void loop() 中加入 Sch.dispatchTasks();
示例代码如下:
void setup ()
{
Your code...
Sch. init ();
Sch. start ();
}
void loop ()
{
Sch. dispatchTasks ();
}
步骤二:
将任务定义放置于代码的末尾,例如这样写入程序:
void setup ()
{
// 其他初始化代码
Sch.init();
Sch.start();
}
void loop()
{
// 主循环中的其他逻辑
Sch.dispatchTasks();
}