MicroPython 树莓派 Pico WDT 实战指南:从 API 到内置看门狗实验

1.软件控制方法

1.1 machine.WDT 的构造方法

machine.WDT 类的构造方法如下:

class machine.WDT(id=0, timeout=5000)

构造给定参数的 WDT 看门狗对象,启动后,WDT 无法停止或重新配置

参数含义如下:

1.png

1.2 machine.WDT 的其他方法

machine.RTC 类还有其他方法:

2.png

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...")

运行的整体时序图如下所示:

3.png

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

4.png

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

posted @ 2026-09-02 17:51  FreakStudio  阅读(10)  评论(0)    收藏  举报