《ESP32-S3使用指南—MicroPython版 V1.0》第二十四章 看门狗实验

第二十四章 看门狗实验


       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按键对看门狗进行喂狗,反次,系统复位操作。


请使用浏览器的分享功能分享到微信等