最近使用了一款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的错误提示不再出现。