ESP32 的 Core 1 和 0 不能分开工作

Core 1 and 0 of ESP32 not working seperately

这是我的代码

#include <WiFi.h>
//#include "StepperMotor.h"
#define SDA_PIN 4
#define SCL_PIN 5

const char* ssid = "StepperMotorWireless";
const char* password = "";


WiFiServer server(9090);
WiFiClient client;

char buffer[50] = {0};
int buffercounter = 0;

TaskHandle_t StepperHandler;
TaskHandle_t WifiHandler;

void setup()
{
  Serial.begin(9600);
  SetWifi(ssid, password);
  pinMode(2, OUTPUT);

  xTaskCreatePinnedToCore(
    StepperLoop, /* Task function. */
    "StepperHandler",   /* name of task. */
    4000,     /* Stack size of task */
    NULL,      /* parameter of the task */
    2,         /* priority of the task */
    &StepperHandler,    /* Task handle to keep track of created task */
    1);        /* pin task to core 0 */
}

void SetWifi(const char* name, const char* password)
{
  WiFi.disconnect();
  WiFi.mode(WIFI_AP_STA);
  WiFi.softAP(name, password);
  delay(2000);
  IPAddress IP = WiFi.softAPIP();
  Serial.print("Server IP : ");
  Serial.println(IP);
  server.begin();
  server.setNoDelay(true);
  Serial.println("Server Started");
}


void availableMessage() {
  if (client && client.connected() && client.available()) {
    while (client.available()) {
      String message = client.readStringUntil('\n');
      Serial.println(message);
      char temp[50];
      message.toCharArray(temp, 50);
      client.flush();
    }
  }
}

void connectClient() {
  if (server.hasClient())
  {
    if (client = server.available()) {
      Serial.println("connected");
    }
  }
}

void StepperLoop( void * pvParameters ) {
  digitalWrite(2, HIGH);
  delay(1000);
  digitalWrite(2, LOW);
  delay(1000);
}



void loop()
{
 connectClient();
  availableMessage();
}

问题是我闪烁的 LED 不是 1 秒长,所以有什么东西打断了它(显然是 wifi,因为那是唯一的另一件事 运行)。 这很奇怪,因为你在互联网上看到的每一个东西,Wifi 任务都固定在核心 0 上,而我 运行 我的闪烁代码在核心 1 上,所以这不应该干扰。

我似乎无法解决这个问题,有人可以帮我吗?

顺便说一句,我正在使用 arduino IDE

不长闪烁1秒是什么意思?你测过时间还是可以直接看到?

你的 LED/Stepper 循环不是循环!如果你让 LED 闪烁不止一次:

void StepperLoop( void * pvParameters ) {
    while (1) {
        digitalWrite(2, HIGH);
        delay(1000);
        digitalWrite(2, LOW);
        delay(1000);
    }
}