【银杏科技ARM+FPGA双核心应用】MicroPython系列七:看门狗实验

[复制链接]
 楼主| 如意不如意 发表于 2020-7-3 16:30 | 显示全部楼层 |阅读模式
本帖最后由 如意不如意 于 2020-7-3 16:30 编辑

一、实验目的

掌握micropython的独立看门狗用法,控制iCore3的异常自动复位。

二、实验设备及平台
  • iCore3双核心板点击购买
  • Micro USB线
  • 电脑

三、实验原理
STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序运行错误时,未在规定时间内喂狗,自动复位ARM,本实验通过按键按下,停止喂狗,制造程序运行错误,从而产生复位。

四、实验步骤
  • 用数据线将iCore3的USB-OTG口与电脑相连;
  • 打开PYBFLASH磁盘,将代码包中的main.py文件替换到PYBFLASH的main.py;
  • 弹出磁盘,将iCore3重新上电,代码运行;

五、实验现象
iCore3双核心板三色LED交替闪烁,当按键按下超过1s,看门狗复位ARM。注意:若按键按下时间太长,导致ARM多次复位,程序会崩溃,需要断电重启。目前micropython只支持独立看门狗,不支持窗口看门狗,且只能复位RAM,不会产生中断。

六、实验程序
  1. # -*- coding: utf-8-*-
  2. # main.py -- put your code here!
  3. from machine import WDT  #导入看门狗
  4. from pyb import Pin    #导入引脚库

  5. #定义看门狗对象,超时1s未喂狗,则重置系统
  6. wdt = WDT(timeout=1000)
  7. #创建按键对象,输入上拉,默认高电平
  8. key = Pin('H15', Pin.IN, Pin.PULL_UP)

  9. while True:
  10.     if key() == 0:       #如果按键按下
  11.         pyb.delay(50)    #等待
  12.     else:
  13.         wdt.feed()       #喂狗

  14.         pyb.LED(1).on()  #红灯亮
  15.         pyb.LED(2).off()
  16.         pyb.LED(3).off()
  17.         pyb.delay(300)   #延时300ms

  18.         pyb.LED(1).off()
  19.         pyb.LED(2).on()  #绿灯亮
  20.         pyb.LED(3).off()
  21.         pyb.delay(300)   #延时300ms

  22.         pyb.LED(1).off()
  23.         pyb.LED(2).off()
  24.         pyb.LED(3).on()  #蓝灯亮
  25.         pyb.delay(300)   #延时300ms
代码包.zip (1017 Bytes, 下载次数: 1)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

66

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部