当前位置:   article > 正文

关于ESP32循环读写文件触发看门狗的解决方法_esp32 解除看门狗

esp32 解除看门狗

关于ESP32循环读写文件触发看门狗的解决方法

PlatformIO: Upload and Monitor (esp32dev)(333) - Ta
E (30145) task wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (30145) task_wdt: - async_tcp (CPU 0/1)
E (30145) task wdt: Tasks currently running:
E (30145) task wdt: CPU 0: IDLE
E (30145) task wdt: CPU 1: loopTask
E (30145) task_wdt: Aborting.
abort() was called at PC 0x400f0749 on core 0

我使用esp32进行从SD转移文件到LittleFS,循环读写触发看门狗报错

在这里插入图片描述
通过TGP反复查询测试得出以下代码

#include <Arduino.h>
#include <esp_task_wdt.h>

void setup() {
  // 初始化其他设置
  // ...

  // 启用看门狗定时器
  esp_task_wdt_init(5, true); // 设置看门狗超时时间为5秒,第二个参数为true表示启用看门狗

  // 启动一个任务,定期执行喂狗操作
  xTaskCreatePinnedToCore(taskFunction, "WatchdogTask", 1000, NULL, 1, NULL, 1);
}

void loop() {
  // 进行主要的任务
  // ...

  // 此处不需要调用 yield(),由任务中的喂狗操作来管理
}

void taskFunction(void* parameter) {
  for (;;) {
    // 喂狗,避免看门狗定时器超时
    esp_task_wdt_reset();

    // 一些其他任务操作
    // ...

    // 适当的延时,以避免过于频繁的喂狗
    vTaskDelay(pdMS_TO_TICKS(1000)); // 1秒延时
  }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

经测试,已解决喂狗问题成功完成循环读写,由于ESP文件读写时间过长导致任务挂起时间过长,无法释放cpu给其他任务

在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/196181
推荐阅读
相关标签
  

闽ICP备14008679号