struct led_config{
int pin;
int time;
};
void task_led(void *pt){
int pin_num= ((led_config *)pt) ->pin;
int time=((led_config *)pt)->time;
pinMode(pin_num, OUTPUT);
while(1){
vTaskDelay(time);
digitalWrite(pin_num,!digitalRead(pin_num));
Serial.println(pin_num);
Serial.println(xPortGetCoreID());
Serial.println("------------");
}
}
led_config led1{33,1000};
led_config led2{32,2000};
led_config led3{25,3000};
// setup 默认运行在核心1
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
// esp32 为双核 , 0核心 为默认运行BT 和wifi ,因此尽量将任务运行在核心1上面,wifi和蓝牙能更顺畅;
xTaskCreatePinnedToCore(task_led,"led-33",1024,(void *)&led1,1,NULL,1); //指定核心运行任务
xTaskCreate(task_led,"led-32",1024,(void *)&led2,1,NULL);
xTaskCreate(task_led,"led-25",1024,(void *)&led3,1,NULL);
Serial.println("-----setup 核心id-----");
Serial.println(xPortGetCoreID());
Serial.println("--------------------");
}
c
// loop 默认运行在核心1
void loop() {
// put your main code here, to run repeatedly:
delay(3000); // this speeds up the simulation
Serial.println("-----loop 核心id-----");
Serial.println(xPortGetCoreID());
Serial.println("-----l---------------");
}