main.lua 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "wdtdemo"
  3. VERSION = "1.0.0"
  4. log.info("main", PROJECT, VERSION)
  5. -- sys库是标配
  6. _G.sys = require("sys")
  7. sys.taskInit(function()
  8. -- 这个demo要求有wdt库
  9. -- wdt库的使用,基本上每个demo的头部都有演示
  10. -- 模组/芯片的内部硬狗, 能解决绝大多数情况下的死机问题
  11. -- 但如果有要求非常高的场景, 依然建议外挂硬件,然后通过gpio/i2c定时喂狗
  12. if wdt == nil then
  13. while 1 do
  14. sys.wait(1000)
  15. log.info("wdt", "this demo need wdt lib")
  16. end
  17. end
  18. -- 注意, 大部分芯片/模块是 2 倍超时时间后才会重启
  19. -- 以下是常规配置, 9秒超时, 3秒喂一次狗
  20. -- 若软件崩溃,死循环,硬件死机,那么 最多 18 秒后,自动复位
  21. -- 注意: 软件bug导致业务失败, 并不能通过wdt解决
  22. wdt.init(9000)
  23. sys.timerLoopStart(wdt.feed, 3000)
  24. end)
  25. -- 创建一个新的任务来模拟故障场景
  26. sys.taskInit(function()
  27. log.info("fault_task", "Entering infinite loop to simulate fault.")
  28. while true do
  29. -- 模拟故障场景,真的进入死循环
  30. end
  31. end)
  32. -- 用户代码已结束---------------------------------------------
  33. -- 结尾总是这一句
  34. sys.run()
  35. -- sys.run()之后后面不要加任何语句!!!!!