esp32双核多任务

admin 4月前 293

#include "DHT.h"

#define DHTPIN 13
#define DHTTYPE DHT11

const int led = 2;
DHT dht(DHTPIN, DHTTYPE);

setup() {
  Serial.begin(115200);
  pinMode(led,OUTPUT);
  dht.begin();
  xTaskCreatePinnedToCore(Task1code, "Task1", 10000, NULL, 1, NULL, 1);
  delay(500);
  xTaskCreatePinnedToCore(Task1code, "Task1", 10000, NULL, 1, NULL, 0);
  delay(500);
}

void Task1code(void * pvParameters ){
  Serial.print("Task1 在核心上运行");
  Serial.println(xPortGetCoreID());
  for(;;){
    digitalWrite(led, HIGH);
    delay(300);
    digitalWrite(led,LOW);
    delay(300);
  }
}

void Task2code(void * pvParameters ){
  Serial.print("Task2 在核心上运行");
  Serial.println(xPortGetCoreID());
  for(;;){
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    float f = dht.readTemperature(true);
    Serial.print("温度:");
    Serial.print(t);
    Serial.print(" *C \n ");
    if (isNan(h) || isNan(t) || isNan(f)) {
      Serial.println("读取 DHT 传感器失败!");
      return;
    }
    delay(2000);
  }
}

loop() {
}


欢迎联系本站长QQ:3216572
最新回复 (1)
  • admin 4月前
    2
    xTaskCreatePinnedToCore() 函数有 7 个参数:

    实现任务的函数名(task1)

    任务的任何名称(“task1”等)

    以字为单位分配给任务的堆栈大小(1 个字=2 字节)

    任务输入参数(可以为NULL)

    任务的优先级(0为最低优先级)

    任务句柄(可以为 NULL)

    任务将运行的核心 ID(0 或 1)
返回