arduino看门狗
时间: 2025-01-04 18:35:35 浏览: 51
Arduino 看门狗定时器概述
看门狗定时器(WDT, Watch Dog Timer)是一种硬件机制,用于监控微控制器系统的健康状态并防止死锁或无响应情况的发生[^2]。当程序正常执行时,软件会定期重置这个计数器;一旦由于某种原因未能及时重置,则触发系统自动重启。
对于Arduino平台上的ESP32设备而言,存在多种类型的看门狗定时器可供选择,包括但不限于中断看门狗定时器(IWDT)、任务看门狗定时器(TWDT)以及晶体振荡器32kHz看门狗定时器(XTWDT)[^3]。其中最常用的是任务看门狗定时器(TWDT),它能够监视特定的任务是否按时完成,并在检测到异常时采取相应措施。
设置与配置
为了启用和管理ESP32的看门狗定时器,在Arduino环境中可以通过调用esp_task_wdt.h
头文件中的函数来实现基本操作。下面是一些常用的API及其作用:
esp_task_wd_add(xTaskHandle task)
:向指定的任务添加看门狗保护。esp_task_wdt_delete(xTaskHandle task)
:移除某个任务的看门狗保护。esp_task_wdt_init(uint32_t timeout_period_ms)
:初始化全局看门狗超时期限,默认情况下适用于所有受保护的任务。esp_task_wdt_reset()
:手动重置当前线程关联的看门狗计数器。
示例代码
以下提供了一个简单的例子展示如何在一个循环内周期性地喂养看门狗以避免意外复位的情况发生:
#include "esp_task_wdt.h"
void setup() {
Serial.begin(115200);
// 初始化看门狗,设定最大等待时间为5秒
esp_task_wdt_init(pdMS_TO_TICKS(5000), true);
// 将main loop加入到被监测列表中
esp_task_wdt_add(NULL);
}
void loop() {
delay(1000); // 延迟一秒
// 这里模拟一些耗时较长的操作...
// 及时喂食看门狗以防溢出导致重启
esp_task_wdt_reset();
}
通过上述方式可以有效地利用看门狗定时器提高嵌入式应用的安全性和稳定性[^5]。
相关推荐

















