下面的代码展示的时如何使用 ESP32上面的双核处理器。
#include <Arduino.h>
#define CONFIG_POWER_EN_PIN 21
#define CONFIG_RUN_LED_PIN 32
// 创建打印任务
TaskHandle_t handleTaskprint;
void Taskprint(void* parameter)
{
int i=0;
while(1)
{
Serial.println(xTaskGetAffinity(handleTaskprint));
Serial.print("task run");
Serial.println(i);
vTaskDelay(1000 / portTICK_PERIOD_MS);
i++;
if(i>600)
{
digitalWrite(CONFIG_POWER_EN_PIN, LOW); // 关机测试
}
}
vTaskDelete(NULL);
}
TaskHandle_t handleTaskrunled;
void TaskRunled(void *parameter)
{
while(1)
{
digitalWrite(CONFIG_RUN_LED_PIN, HIGH);
vTaskDelay(1000 / portTICK_PERIOD_MS);
digitalWrite(CONFIG_RUN_LED_PIN, LOW);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
vTaskDelete(NULL);
}
void setup() {
//上电开机
pinMode(CONFIG_POWER_EN_PIN, OUTPUT);
digitalWrite(CONFIG_POWER_EN_PIN, HIGH);
pinMode(CONFIG_RUN_LED_PIN, OUTPUT);
Serial.begin(115200);
Serial.println("Power: ON");
// esp32 将任务绑定到不同的核心上面
xTaskCreatePinnedToCore(&Taskprint, "PrintThread", configMINIMAL_STACK_SIZE, NULL, 20, &handleTaskprint,0);
xTaskCreatePinnedToCore(&TaskRunled, "Runled", configMINIMAL_STACK_SIZE, NULL,6, &handleTaskrunled,1);
}
void loop() {
Serial.print("Taskprint Affinity : ");
Serial.println(xTaskGetAffinity(handleTaskprint));
Serial.print("Taskrunled Affinity : ");
Serial.print(xTaskGetAffinity(handleTaskrunled));
delay(5000);
}