关于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秒延时
  }
}

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

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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值