MicroPython 树莓派 Pico WDT 实战指南:从 API 到内置看门狗实验
1.软件控制方法
1.1 machine.WDT 的构造方法
machine.WDT 类的构造方法如下:
class machine.WDT(id=0, timeout=5000)
构造给定参数的 WDT 看门狗对象,启动后,WDT 无法停止或重新配置
参数含义如下:

1.2 machine.WDT 的其他方法
machine.RTC 类还有其他方法:

2.内置看门狗实验
在下面代码中,我们创建了一个 WDT 对象,并将超时时间设置为 4 秒(注意,超时时间切勿少于 2s 左右,若是超时时间设置太少,当看门狗生效后,会持续重启设备导致无法烧录程序或远程连接),这意味着如果在 2 秒内未调用 feed() 方法,WDT 将触发系统重启。
然后进入一个循环,持续 30 秒:在每次循环中,程序打印当前的测试时间,延迟 3 秒,然后调用 feed() 方法来喂狗,以防止 WDT 超时,持续十次后,跳出循环,不再喂狗,设备稍后便会重置。
以下代码可以在我们提供的资料包中 elegance-devkit v1\Demo\52 WDG_Hardware 文件夹找到。
示例代码如下:
# Python env : MicroPython v1.23.0
# -*- coding: utf-8 -*-
# @Time : 2024/8/15 下午3:12
# @Author : 李清水
# @File : main.py
# @Description : WDT看门狗定时器类实验,使用Pico内置看门狗外设进行
# ======================================== 导入相关模块 ========================================
# 导入硬件相关模块
from machine import WDT
# 导入时间相关模块
import time
# ======================================== 全局变量 ============================================
# ======================================== 功能函数 ============================================
# ======================================== 自定义类 ============================================
# ======================================== 初始化配置 ==========================================
# 上电延时3s
time.sleep(3)
# 打印调试信息
print("FreakStudio : Built-in Watchdog Timer Test")
# 初始化看门狗对象
# 设置看门狗定时器超时时间为4秒
wdt = WDT(timeout=4000)
# ======================================== 主程序 ===========================================
# 循环喂狗10次
for i in range(10):
# 打印调试信息
print("FreakStudio : Run Test in {} seconds".format(i))
# 延时3s
time.sleep(3)
# 喂狗
wdt.feed()
# 运行37s后,看门狗定时器超时,重启
print("FreakStudio : Watchdog Timer Timeout, Restarting...")
运行的整体时序图如下所示:

烧录代码,打开终端,使用 mpremote 连接树莓派 Pico,输出如下:


可以看到,停止喂狗后,在到达超时时间后,看门狗定时器重启设备。

machine.WDT 类的构造方法如下:
浙公网安备 33010602011771号