ESP32 system 看门狗

中断看门狗

中断看门狗(Interrupt watchdog)用于检测中断是否屏蔽超时

由于 FreeRTOS 任务切换依赖中断信号,因此中断屏蔽超时直接的影响是会导致 Task 无法切换,导致系统崩溃。

中断看门狗被触发的常见原因如下:

  1. Task 在进入 while() 循环之前关闭了中断,而迟迟没有退出循环将中断使能
  2. 待补充

可通过 CONFIG_ESP_INT_WDT_TIMEOUT_MS 增加或减小喂狗时间

Task 看门狗

Task 看门狗定时器(Task Watchdog Timer ,TWDT)用于检测 Task 是否长期占用 CPU 资源

某个 task 长期占用 CPU 会导致其它 task 没有机会被执行,导致设计功能无法实现

Task 看门狗被触发的原因如下:

  1. task 的 while 循环中没有阻塞函数和 vTaskDelay
  2. 待补充

Task 看门狗默认情况下只监视每个 CPU 的 idle task,可以通过 esp_task_wdt_add 为自定义 task 添加监视

参考资料

  1. Watchdogs:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/system/wdts.html#watchdogs

猜你喜欢

转载自blog.csdn.net/qq_20515461/article/details/106291217