搜索
bottom↓
回复: 0

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

[复制链接]

出0入234汤圆

发表于 昨天 14:13 | 显示全部楼层 |阅读模式
2.jpg
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
1.png
3.png

第二十四章 看门狗实验


       MicroPython 看门狗通常指的是在MicroPython环境中使用看门狗(Watchdog)来确保系统稳定运行的一种技术。看门狗(Watchdog)是一种硬件或软件机制,用于监视系统状态并在出现故障时重置系统。在MicroPython环境中,看门狗可以用来检测和解决系统故障,例如软件死循环、系统资源耗尽等问题。
       本章分为如下几个小节:
       24.1 WDT类
       24.2 硬件设计
       24.3 程序设计
       24.4 下载验证

       24.1 WDT类
       在MicroPython中,可以使用machine.WDT类来创建一个看门狗对象,并设置其超时时间。当系统正常运行时,需要在看门狗允许的时间间隔内对计数器进行清零操作,以避免触发系统重启。如果系统出现故障或死机,看门狗计数器溢出,就会产生一个复位信号使系统重启。

       1,machine.WDT类的构造方法
  1. class machine.WDT(id=0, timeout=5000)
复制代码
       该构造方法的参数描述,如下表所示。

1.png
表8.1.1 Pin类构造方法的参数描述

       返回值:看门狗对象。

       2,machine.WDT类的方法

       ①:喂狗
  1. 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 程序流程图
       程序流程图能帮助我们更好的理解一个工程的功能和实现的过程,对学习和设计工程有很好的主导作用。下面看看本实验的程序流程图:


第二十四章 看门狗实验857.png
图24.3.1.1 程序流程图

       18.3.2 程序解析
       本书籍的代码都在main.py脚本下编写的,读者可在光盘资料下找到对应的源码。RTC实验main.py源码如下:
  1. from machine import Pin,I2C,WDT
  2. import atk_xl9555 as io_ex
  3. import time


  4. """
  5. * @brief       程序入口
  6. * @param       无
  7. * @retval      无
  8. """
  9. if __name__ == '__main__':
  10.    
  11.     # 初始化LED并输出高电平
  12.     led = Pin(1,Pin.OUT,value = 1)
  13.     time.sleep_ms(100)
  14.     # IIC初始化
  15.     i2c0 = I2C(0, scl = Pin(42), sda = Pin(41), freq = 400000)
  16.     # XL9555初始化
  17.     xl9555 = io_ex.init(i2c0)
  18.     # 看门狗初始化,定时时间为3s
  19.     wdt = WDT(timeout=3000)
  20.     led.value(0)
  21.    
  22.     while True:
  23.         
  24.         # 获取按键值
  25.         key = int(xl9555.key_scan())
  26.         
  27.         if key == io_ex.KEY0:
  28.             # 喂狗
  29.             wdt.feed()

  30.         time.sleep_ms(10)                       # 延时10ms
复制代码
       该示例代码非常简单,当我们在3秒钟内按下KEY0按键,表示喂狗成功,反次,系统复位。

       24.4 下载验证
       程序下载成功后,首先开启看门狗和点亮LED灯,当3秒钟内按下KEY0按键对看门狗进行喂狗,反次,系统复位操作。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 01:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表