正点原子 发表于 9 小时前

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


1)实验平台:正点原子ESP32S3开发板
2)购买链接:https://detail.tmall.com/item.htm?id=768499342659
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-347618-1-1.html
4)正点原子官方B站:https://space.bilibili.com/394620890
5)正点原子手把手教你学ESP32S3快速入门视频教程:https://www.bilibili.com/video/BV1sH4y1W7Tc
6)正点原子FPGA交流群:132780729


第二十四章 看门狗实验

       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

       3)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按键对看门狗进行喂狗,反次,系统复位操作。
页: [1]
查看完整版本: 《ESP32-S3使用指南—MicroPython版 V1.0》第二十四章 看门狗实验