第二十四章 看门狗实验
MicroPython 看门狗通常指的是在MicroPython环境中使用看门狗(Watchdog)来确保系统稳定运行的一种技术。看门狗(Watchdog)是一种硬件或软件机制,用于监视系统状态并在出现故障时重置系统。在MicroPython环境中,看门狗可以用来检测和解决系统故障,例如软件死循环、系统资源耗尽等问题。
本章分为如下几个小节:
24.1 WDT类
24.2 硬件设计
24.3 程序设计
24.4 下载验证
24.1 WDT类
在MicroPython中,可以使用machine.WDT类来创建一个看门狗对象,并设置其超时时间。当系统正常运行时,需要在看门狗允许的时间间隔内对计数器进行清零操作,以避免触发系统重启。如果系统出现故障或死机,看门狗计数器溢出,就会产生一个复位信号使系统重启。
1,machine.WDT类的构造方法
class machine.WDT(id=0, timeout=5000)
该构造方法的参数描述,如下表所示。
表8.1.1 Pin类构造方法的参数描述
返回值:看门狗对象。
2,machine.WDT类的方法
①:喂狗
WDT.feed()
向看门狗提供输入以防止它重置系统。
24.2 硬件设计
1. 例程功能
本章实验功能简介:通过LCD显示模块实时显示RTC时间,包括年、月、日、时、分、秒等信息。
2. 硬件资源
1)XL9555
IIC_INT-IO0(需在P5连接IO0)
IIC_SDA-IO41
IIC_SCL-IO42
2)WDT
3. 原理图
本章实验使用的WDT为ESP32-S3的片上资源,因此并没有相应的连接原理图。
24.3 程序设计
24.3.1 程序流程图
程序流程图能帮助我们更好的理解一个工程的功能和实现的过程,对学习和设计工程有很好的主导作用。下面看看本实验的程序流程图:
图24.3.1.1 程序流程图
18.3.2 程序解析
本书籍的代码都在main.py脚本下编写的,读者可在光盘资料下找到对应的源码。RTC实验main.py源码如下:
from machine import Pin,I2C,WDT import atk_xl9555 as io_ex import time """ * @brief 程序入口 * @param 无 * @retval 无 """ if __name__ == '__main__': # 初始化LED并输出高电平 led = Pin(1,Pin.OUT,value = 1) time.sleep_ms(100) # IIC初始化 i2c0 = I2C(0, scl = Pin(42), sda = Pin(41), freq = 400000) # XL9555初始化 xl9555 = io_ex.init(i2c0) # 看门狗初始化,定时时间为3s wdt = WDT(timeout=3000) led.value(0) while True: # 获取按键值 key = int(xl9555.key_scan()) if key == io_ex.KEY0: # 喂狗 wdt.feed() time.sleep_ms(10) # 延时10ms
该示例代码非常简单,当我们在3秒钟内按下KEY0按键,表示喂狗成功,反次,系统复位。
24.4 下载验证
程序下载成功后,首先开启看门狗和点亮LED灯,当3秒钟内按下KEY0按键对看门狗进行喂狗,反次,系统复位操作。