// 定义LED灯的结构体
typedef struct{
  byte pin;             // 操控引脚
  uint16_t delayTime;   // 延迟时间
}LED;

LED led1,led2,led3;
// 统一的任务,传入两个参数,第一个是pin,第二个是延迟时间
void led_task(void *param_t){
  // 从传入参数中提取结构体
  LED led = *(LED *)param_t;
  byte pin = led.pin;
  uint16_t delayTime =  led.delayTime;
  pinMode(pin, OUTPUT);
  while(1){
    // 先读取引脚的高低电平,然后翻转,最后重新设置给这个引脚
    digitalWrite(pin, !digitalRead(pin));
    vTaskDelay(delayTime/portTICK_PERIOD_MS);
  }
}
void setup() {
  Serial.begin(115200);

  // 设置参数
  led1.pin=4;   led1.delayTime=1000;
  led2.pin=5;   led2.delayTime=2000;
  led3.pin=6;   led3.delayTime=3000;

  xTaskCreate(led_task, "Blink Red",1024,&led1,1,NULL);
  Serial.println("第一个任务被创建,将控制红灯每秒亮灭一次");
  xTaskCreate(led_task, "Blink Green",1024,&led2,1,NULL);
  Serial.println("第二个任务被创建,将控制红灯每2秒亮灭一次");
  xTaskCreate(led_task, "Blink Blue",1024,&led3,1,NULL);
  Serial.println("第三个任务被创建,将控制红灯每3秒亮灭一次");
}

void loop() {
  
}
esp:0
esp:1
esp:2
esp:3
esp:4
esp:5
esp:6
esp:7
esp:8
esp:9
esp:10
esp:11
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:20
esp:21
esp:35
esp:36
esp:37
esp:38
esp:39
esp:40
esp:41
esp:42
esp:45
esp:46
esp:47
esp:48
esp:3V3.1
esp:3V3.2
esp:RST
esp:5V
esp:GND.1
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:GND.4
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C