liehuf-notes liehuf-notes
首页
K230
Verilog
留言板
我的博客 (opens new window)
GitHub (opens new window)
首页
K230
Verilog
留言板
我的博客 (opens new window)
GitHub (opens new window)
  • 1.K230 简单介绍
  • 2.K230 micropython基础
  • 3.K230 FPIOA&GPIO - 一切的根源
  • 4.K230 PWM的玩法
  • 5.K230 UART-发送和接收
  • 6.K230 RTC-时间都去哪了
  • 7.我用定时器定时画个圈圈祝福你
  • 8.修勾别复位,我来喂你
    • 1. 什么是看门狗(WDT)?
    • 2. WDT 的用途场景
    • 3. 喂狗的基本素养
      • ⚙️ 参数说明:
    • 4. 实验:假装程序死掉会发生什么?
    • 5. 复位之后能干点啥?
    • 6. 注意事项
    • 7. 进阶玩法建议(可拓展)
    • 8. 总结
    • 参考资料
    • 免责声明
  • 9.哈基摄,给我拍
  • 10.摄像头的基本素养-画面
  • 11.摄像头的猫-在画面上画画
  • K230
猎户f
2025-07-06
目录

8.修勾别复位,我来喂你

# 修勾别复位,我来喂你

# 1. 什么是看门狗(WDT)?

“看门狗”WDT(Watchdog Timer)其实就是一个“定时复位装置”。如果你的程序一不小心跑飞了、死循环了、不响应了,看门狗就会跳出来重启系统,类似“自动拔电源再插一下”的狠角色。

🧠 类比理解:

  • 正常工作时,你要定期喂它一口饭(喂狗)
  • 要是你忘了,它就“发疯咬你”,直接给你复位

WDT = “你要活着,就别忘了让我知道你还活着”


# 2. WDT 的用途场景

场景 说明
程序卡死检测 代码死循环,无法退出,系统僵住
内存溢出保护 异常分配造成堆栈错乱
定时自检/重启 系统定期刷个存在感
工业嵌入式应用 提高系统可靠性,关键设备必备

# 3. 喂狗的基本素养

from machine import WDT
import time

# 初始化看门狗:设定超时时间(单位:毫秒)
wdt = WDT(timeout=3000)

while True:
    print("我还活着,别复位我!")
    time.sleep(2)
    wdt.feed()  # 喂狗,重置倒计时
1
2
3
4
5
6
7
8
9
10

# ⚙️ 参数说明:

参数名 说明
timeout 看门狗超时时间(ms)
.feed() 喂狗,避免复位

# 4. 实验:假装程序死掉会发生什么?

你可以试试不喂狗,看系统会不会乖乖复位:

from machine import WDT
import time

wdt = WDT(timeout=3000)

while True:
    print("我装死3秒,你咬我啊")
    time.sleep(4)  # 故意超过 3 秒不喂狗
    # 没有 wdt.feed(),系统会被复位
1
2
3
4
5
6
7
8
9

运行这个程序,3秒一过,K230会毫不犹豫地重启系统。日志会在串口里显示 WDT Reset 字样。

# 5. 复位之后能干点啥?

你可以通过 machine.reset_cause() 检查系统是被谁复位的,看看是不是狗咬的:

import machine

cause = machine.reset_cause()
if cause == machine.WDT_RESET:
    print("🐶 看门狗复位了我")
else:
    print("🔄 普通复位或其他原因")

1
2
3
4
5
6
7
8

这招适合在程序一启动就知道“我为什么会在这里”,有助于你搞清楚系统稳定性问题。

# 6. 注意事项

  1. 超时时间单位是毫秒,别写成 3 以为是 3 秒,结果狗没来你先懵。
  2. 一旦初始化看门狗,就必须喂狗,否则它肯定咬你。
  3. 有些平台支持禁用WDT,但在 K230 中你一旦启用就是实打实的“忠犬八公”。
  4. 如果你的任务循环时间比 WDT 超时时间长,你得手动 feed() 前做分段设计。

# 7. 进阶玩法建议(可拓展)

想法 说明
重启后记录信息 比如把“崩了”的位置写进 Flash/RTC RAM
多线程喂狗 不同任务交替喂狗,检测线程挂死
设置“看门狗门槛” 控制只有特定条件才启动 WDT

# 8. 总结

🐶 看门狗的存在,是为了在你犯错时拉你一把(顺便咬你一口)。 它不是万能的防挂机制,但在工业级系统里,它是可靠性的大哥大。 写完代码别忘了加喂狗逻辑,就像每天给你的宠物倒碗饭,不然第二天你就得找补丁了。


# 参考资料

  • K230 WDT 官方文档 (opens new window)
  • MicroPython WDT API 文档

# 免责声明

本文档及所有内容(包括文字、图片、代码等)均为作者基于嘉立创庐山派K230开发板公开资料和个人使用经验整理分享,仅供学习和技术交流之用。

所有涉及的品牌名称、商标、图片及相关资源均归嘉立创官方所有,未经授权不得用于商业宣传或其他用途。

作者与嘉立创官方无任何隶属或代理关系,内容不构成任何形式的官方承诺或保证。

用户在使用相关资源时,应遵守相应的开源协议和法律法规,确保合法合规。

如涉及版权问题,请联系作者或嘉立创官方处理。

帮助我们改善此页面 (opens new window)
上次更新: 2025/07/12, 16:01:22
7.我用定时器定时画个圈圈祝福你
9.哈基摄,给我拍

← 7.我用定时器定时画个圈圈祝福你 9.哈基摄,给我拍→

Theme by Vdoing | Copyright © 2025-2025 Eryajf | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式