在esp32 arduino中使用WDT的正确方法

时间:2019-05-16 05:16:48

标签: arduino watchdog esp32

我想使用xTaskCreatePinnedToCore函数在每个内核上运行两个任务。

以下是出于我的目的而最小化的代码。

#include "esp_task_wdt.h"

void setup() {

  BaseType_t result = xTaskCreatePinnedToCore( handleOtherThings, "handleOtherThings", 20000, NULL, 1, NULL, 0 );
}

void handleOtherThings( void* param ) {

  while( true ){

    esp_task_wdt_reset();
  }
}
void loop() {
  // put your main code here, to run repeatedly:

}

但是,WDT重置保持触发状态。

如果我使用yield()而不是esp_task_wdt_reset(),什么都不会改变

但是,如果我将esp_task_wdt_reset()更改为vTaskDelay(10 / portTICK_PERIOD_MS),则不会再重置WDT,但是我不希望任务延迟10毫秒。

delay(1);还重置WDT计时器,但我也不想将其延迟1毫秒。

delay(0);不要重置WDT计时器。

delayMicroseconds(100);不要重置WDT计时器。

在ESP32-arduino中重置WDT定时器的最小和正确方法是什么?

0 个答案:

没有答案