ESP32在ESP-IDF环境下禁用看门狗

最近使用了一款ESP32的开发板。但在调试时发现出现许多看门狗复位事件:

E (8296) task_wdt: Task watchdog got triggered. The following tasks/users did not reset the watchdog in time:

E (8296) task_wdt:  – IDLE (CPU 0)

E (8296) task_wdt: Tasks currently running:

E (8296) task_wdt: CPU 0: sd_run_task

E (8296) task_wdt: CPU 1: IDLE

E (8296) task_wdt: Print CPU 0 (current core) backtrace

在乐鑫官网上查询,发现有三种看门狗:

  • 硬件看门狗定时器

  • 中断看门狗定时器 (IWDT)

  • 任务看门狗定时器 (TWDT)

  • 其中的硬件看门狗列出了代码禁用方法,但暂时没有找到代码需要包含哪个头文件。因此暂时无法禁用硬件看门狗。

    而输出的调试信息显示应该是任务看门狗,但在示例代码中也暂时没有找到显示声明和启用的代码。因为官网提供了任务看门狗的初始化等代码,打算加入看门狗喂狗代码,以防止看门狗复位。

    但根据示例加入后,编译能通过,但运行时提示看门狗已初始化。此路也不通。

    再次阅读资料,发现看门狗都可以通过宏定义来禁用。

    考虑到ESP-IDF的配置都可以通过SDKConfig来配置,双击SDKConfig文件,在弹出的配置界面中仔细查找后找到以下信息:

    把这两项与看门狗的配置项全部取消对勾后,保存,编译,运行,task_wdt的错误提示不再出现。

    作者:wooden954

    物联沃分享整理
    物联沃-IOTWORD物联网 » ESP32在ESP-IDF环境下禁用看门狗

    发表回复