o熊小猫o 发表于 2015-4-2 15:59:14

Arduino多线程库

本帖最后由 o熊小猫o 于 2015-4-2 16:09 编辑

废话少说,直接进正题。简单的写一下用法第一:#include "SCoop.h"这个不需要解释了吧。。

第二:
void setup() {
mySCoop.start();
}
第三void loop() {
yield();
}
接下来就可以使用多线程了。请继续往下看:定义一个名字为“TaskTest”的线程

defineTask(TaskTest);
void TaskTest::setup()
{
//这里是setup
}
void TaskTest::loop()
{
//这是是loop的内容
}还没完,如果这个线程中执行的动作不需要setup的话,还可以使用defineTaskLoop快速定义的方式,如下:
defineTaskLoop(TaskTest1)
{
//我是一段小代码呀,咿呀咿呀哟
}注意一点,使用此库之后,请使用sleep(ms)作为延时。因为sleep(ms)只针对当前线程。而delay(ms)是针对全局的。
最后来一个完成的演示吧,2个LED分别以100毫秒和1秒的速度闪烁。12和13引脚分别接LED,然后运行代码看看效果吧。
#include "SCoop.h"

defineTask(TaskTest);
void TaskTest::setup()
{
      pinMode(13, OUTPUT);
}
void TaskTest::loop()
{
digitalWrite(13, HIGH);
sleep(1000);
digitalWrite(13, LOW);
sleep(1000);
}

//快速定义
defineTaskLoop(TaskTest1)
{
digitalWrite(12, HIGH);
sleep(100);
digitalWrite(12, LOW);
sleep(100);
}

void setup() {
mySCoop.start();
pinMode(12, OUTPUT);
}

void loop()
{
yield();
}

下载地址:



q2017 发表于 2017-3-16 14:49:09

试试看................

duyi324 发表于 2016-12-23 09:13:25

不能再多几个线程吗 0=0 看代码我也感觉只能有两个线程

大连林海 发表于 2015-4-2 22:41:33

作为小白 还是看不懂:Q

hnyzcj 发表于 2015-4-3 07:33:21

大连林海 发表于 2015-4-2 22:41
作为小白 还是看不懂

大学操作系统你没有好好学吧。

o熊小猫o 发表于 2015-4-3 08:21:20

大连林海 发表于 2015-4-2 22:41
作为小白 还是看不懂

大概就是定义多个loop,然后每个loop各自做自己的事情。

大连林海 发表于 2015-4-3 10:27:06

hnyzcj 发表于 2015-4-3 07:33
大学操作系统你没有好好学吧。

非计算机专业 好痛苦

大连林海 发表于 2015-4-3 10:27:12

hnyzcj 发表于 2015-4-3 07:33
大学操作系统你没有好好学吧。

非计算机专业 好痛苦

chengbao127121 发表于 2016-6-7 16:56:44

好东西试试看

immortalt 发表于 2016-9-26 01:57:49

测试了一下仿佛最多2个线程。。。太少了

q2017 发表于 2017-9-28 11:22:23

谢谢分享.......................

1214032625 发表于 2018-4-10 10:16:32

这最多能支持几个线程啊?或者有什么缺点?

愁如烟 发表于 2018-4-28 09:54:34

从测序代码看应该可以多个线程,但是还没有测试不知道。
页: [1]
查看完整版本: Arduino多线程库