#define STACK_SIZE 1024  // 栈的大小,实际计算方式为1024 * 栈宽度,ESP32栈的宽度为8位字节
static TaskHandle_t xDTaskHandle = NULL;             // 动态任务句柄
static TaskHandle_t xStaticTaskHandle = NULL;        // 静态任务句柄
static TaskHandle_t xTaskHandle_Core0 = NULL;        // 在核心0 创建的静态任务句柄
static TaskHandle_t xStaticTaskHandle_Core1 = NULL;  // 在核心1 创建的静态任务句柄

static StaticTask_t xTaskBuffer;                    // 静态任务控制块
static StaticTask_t xTaskBuffer_Core1;              // 在核心1 运行的静态任务控制块

static StackType_t uxTaskStack[STACK_SIZE];         // 静态任务栈空间
static StackType_t uxTaskStack_Core1[STACK_SIZE];   // 在核心1运行的 静态任务栈空间

void task(void *params){
  while(1){
    delay(10);
  }
}
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Hello, ESP32-S3!");

  // 创建动态任务
  xTaskCreate(task, "D-Task", STACK_SIZE, NULL, 1, &xDTaskHandle);
  // 创建静态任务
  xStaticTaskHandle = xTaskCreateStatic(task, "S-Task", STACK_SIZE, NULL, 2, uxTaskStack, &xTaskBuffer);
  // 在核心0 创建动态任务
  xTaskCreatePinnedToCore(task, "D-Task-C0", STACK_SIZE, NULL, 3, &xTaskHandle_Core0, 0);
  // 在核心1 创建静态任务
  xStaticTaskHandle_Core1 = xTaskCreateStaticPinnedToCore(task, "S-Task-C1", STACK_SIZE, NULL, 4, uxTaskStack, &xTaskBuffer, 1);
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(10); // this speeds up the simulation
}