Ardiuno ESP32 实现多线程

需要创建三个ino 文件 主文件main.ino 线程1:task1.ino ,线程2:task2.ino ,估计是一个线程一个ino 文件 目前没有测试

----------------------------------------------------------------main.ino 文件

#include <TridentTD_EasyFreeRTOS32.h> //Ardiuno.ide 有这个库,直接加载调用 、、

//查询这个EasyFreeRTOS32 库

EasyFreeRTOS32 task1, task2;          // 线程文件链接

void myblink(void*), myprint(void*); 

void setup() {

  Serial.begin(115200);

  Serial.println();

  task1.start(myblink);  //启动第一个线程,激活myblink

  task2.start(myprint);  //启动第二个线程,激活myprint

}

void loop() {}  // 不再需要它,但它是可用的。

---------------------------------------------------------------- task1.ino

void myblink(void*){          //  task1

  VOID SETUP(){               //  

    Serial.println("Hello Blink Task");  

    pinMode(18,OUTPUT);

  }

  VOID LOOP() {               //

    digitalWrite(18,HIGH);

    DELAY(1000);              //

    digitalWrite(18,LOW);

    DELAY(1000);

  }

}

---------------------------------------------------------------- task2.ino

void myprint(void*){      

  //----仅供参考的区域

  VOID SETUP(){               //  但是用setup()大写 区别原来的

    Serial.println("Hello myprint Task");  

    pinMode(19,OUTPUT);

  }

  VOID LOOP() {               // เหมือน loop() 大写

    digitalWrite(19,HIGH);

    DELAY(700);              // เหมือน delay(..) 大写替代原来的

    digitalWrite(19,LOW);

    DELAY(700);

  }

}

对于ArduinoESP32开发板,有一个名为"Arduino ESP32"的官方核心库,它提供了多线程编程的支持。该库基于FreeRTOS实时操作系统,并提供了一组API函数来创建和管理多个线程。 您可以通过以下步骤在Arduino IDE中安装ESP32核心库: 1. 打开Arduino IDE。 2. 点击 "文件(File)" 菜单,选择 "首选项(Preferences)"。 3. 在 "附加开发板管理器网址(Additional Boards Manager URLs)" 中添加以下链接:https://dl.espressif.com/dl/package_esp32_index.json 4. 点击 "确定(OK)"。 5. 打开 "工具(Tools)" 菜单,选择 "开发板(Board)",然后选择 "开发板管理器(Boards Manager)"。 6. 在搜索栏中搜索 "ESP32"。 7. 找到 "esp32" 并点击 "安装(Install)"。 安装完成后,您可以使用Arduino ESP32核心库来编写多线程的程序。以下是一个使用该库的简单示例: ```cpp #include <Arduino.h> #include <TaskScheduler.h> TaskScheduler scheduler; void task1(){ // 任务1的代码 } void task2(){ // 任务2的代码 } void setup() { scheduler.init(); scheduler.addTask(task1); scheduler.addTask(task2); scheduler.enableAll(); } void loop() { scheduler.execute(); } ``` 在上面的示例中,我们使用`TaskScheduler`库创建了一个任务调度器,并定义了两个任务`task1`和`task2`。在`setup()`函数中,我们初始化调度器并添加了这两个任务。然后,在`loop()`函数中,我们调用`scheduler.execute()`来执行任务调度器。 您可以根据需要添加更多的任务,并在每个任务中编写自己的代码。调度器将按照您设置的优先级和时间间隔来执行这些任务。请注意,ESP32具有多个处理器内核,因此可以同时运行多个任务,从而实现真正的多线程并行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kisd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值