簡體   English   中英

ESP32 的核心 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 任務都固定在 Core 0 上,而我在 Core 1 上運行我的眨眼代碼,所以不應該干擾。

我似乎無法解決這個問題,有人可以幫我嗎?

順便說一句,我正在使用 arduino IDE

1 秒不閃爍是什么意思? 你有沒有測量過時間或者你能直接看到它嗎?

您的 LED/步進器循環不是循環! 如果您的 LED 閃爍不止一次:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM