air153c_wdt.lua 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. -- air153c_wdt.lua
  2. --[[
  3. @summary Air153C外部看门狗演示模块
  4. @version 1.0
  5. @date 2025.10.25
  6. @author 陈媛媛
  7. @usage
  8. 本模块演示Air153C外部看门狗的正常和异常场景:
  9. 1、正常场景:定期喂狗,系统正常运行
  10. 2、异常场景:模拟故障导致无法喂狗,触发看门狗复位
  11. 3、通过修改 DEMO_MODE 变量来选择演示模式:
  12. - "normal": 正常喂狗模式
  13. - "fault": 异常故障模式
  14. 注意:在异常模式下,设备会在运行一段时间后重启
  15. ]]
  16. -- 演示模式选择: "normal" 或 "fault"
  17. local DEMO_MODE = "normal" -- 修改这个变量来切换演示模式
  18. -- 看门狗喂狗任务函数
  19. local function watchdogTask()
  20. -- 检查air153C_wtd库是否存在
  21. if air153C_wtd == nil then
  22. log.error("air153C_wtd", "air153C_wtd库不存在")
  23. return
  24. end
  25. -- 初始化看门狗引脚28
  26. air153C_wtd.init(28)
  27. log.info("air153C_wtd", "外部看门狗已初始化,引脚28")
  28. if DEMO_MODE == "normal" then
  29. -- 正常模式:主循环中定期喂狗
  30. while true do
  31. -- 每10秒喂一次狗
  32. air153C_wtd.feed_dog(28)
  33. log.info("wdt", "Watchdog fed")
  34. -- 执行其他业务逻辑
  35. sys.wait(10000) -- 等待10秒
  36. end
  37. elseif DEMO_MODE == "fault" then
  38. -- 异常模式:先正常喂狗一段时间,然后停止喂狗
  39. local feed_count = 0
  40. while true do
  41. -- 每10秒喂一次狗
  42. air153C_wtd.feed_dog(28)
  43. feed_count = feed_count + 1
  44. log.info("wdt", "Watchdog fed")
  45. -- 执行其他业务逻辑
  46. sys.wait(10000) -- 等待10秒
  47. -- 喂狗3次后(约30秒)停止喂狗,模拟故障
  48. if feed_count >= 3 then
  49. log.info("wdt", "Stopping watchdog feed to simulate fault")
  50. break
  51. end
  52. end
  53. end
  54. end
  55. -- 看门狗喂狗任务
  56. sys.taskInit(watchdogTask)