| **银杏科技有限公司旗下技术文档发布平台** |||| |技术支持电话|**0379-69926675-801**||| |技术支持邮件|Gingko@vip.163.com||| ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | V1.0 | 2020-06-15 | gingko | 初次建立 | ===== 例程七:【micropython】看门狗实验 ===== ==== 一、实验目的 ==== 掌握micropython的独立看门狗用法,控制iCore3的异常自动复位。 ==== 二、实验设备及平台 ==== - iCore3双核心板[[https://item.taobao.com/item.htm?id=524229438677|点击购买]] - Micro USB线 - 电脑 ==== 三、实验原理 ==== STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序运行错误时,未在规定时间内喂狗,自动复位ARM,本实验通过按键按下,停止喂狗,制造程序运行错误,从而产生复位。 ==== 四、实验步骤 ==== - 用数据线将iCore3的USB-OTG口与电脑相连; - 打开PYBFLASH磁盘,将代码包中的main.py文件替换到PYBFLASH的main.py; - 弹出磁盘,将iCore3重新上电,代码运行; ==== 五、实验现象 ==== iCore3双核心板三色LED交替闪烁,当按键按下超过1s,看门狗复位ARM。 注意:若按键按下时间太长,导致ARM多次复位,程序会崩溃,需要断电重启。目前micropython只支持独立看门狗,不支持窗口看门狗,且只能复位RAM,不会产生中断。 ==== 六、实验程序 ==== # -*- coding: utf-8-*- # main.py -- put your code here! from machine import WDT #导入看门狗 from pyb import Pin #导入引脚库 #定义看门狗对象,超时1s未喂狗,则重置系统 wdt = WDT(timeout=1000) #创建按键对象,输入上拉,默认高电平 key = Pin('H15', Pin.IN, Pin.PULL_UP) while True: if key() == 0: #如果按键按下 pyb.delay(50) #等待 else: wdt.feed() #喂狗 pyb.LED(1).on() #红灯亮 pyb.LED(2).off() pyb.LED(3).off() pyb.delay(300) #延时300ms pyb.LED(1).off() pyb.LED(2).on() #绿灯亮 pyb.LED(3).off() pyb.delay(300) #延时300ms pyb.LED(1).off() pyb.LED(2).off() pyb.LED(3).on() #蓝灯亮 pyb.delay(300) #延时300ms