air153C_wtd.lua 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. --[[
  2. @module air153C_wtd
  3. @summary 添加软件看门狗功能,防止死机
  4. @data 2023.5.23
  5. @author 翟科研
  6. @usage
  7. --local air153C_wtd = require ("air153C_wtd")
  8. -- 用法实例
  9. -- sys.taskInit(function ()
  10. -- air153C_wtd.init(28)
  11. -- air153C_wtd.feed_dog(28,10)--28为看门狗引脚,10为设置喂狗时间
  12. -- --air153C_wtd.set_time(1)--开启定时模式再打开此代码,否则无效
  13. -- end)
  14. ]]
  15. local sys = require "sys"
  16. _G.sysplus = require("sysplus")
  17. air153C_wtd={}
  18. --[[
  19. 初始化引脚
  20. @api air153C_wtd.init(watchdogPin)
  21. @int 看门狗控制引脚
  22. @return nil
  23. @usage
  24. air153C_wtd.init(28)
  25. ]]
  26. function air153C_wtd.init(watchdogPin)
  27. gpio.setup(watchdogPin,0,gpio.PULLDOWN)
  28. gpio.set(watchdogPin,0)
  29. end
  30. function air153C_wtd.callback(watchdogPin)
  31. gpio.set(watchdogPin,0)
  32. end
  33. --[[
  34. 调用此函数进行喂狗
  35. @api air153C_wtd.feed_dog(watchdogPin)
  36. @int watchdogPin设置看门狗控制引脚
  37. @return nil
  38. @usage
  39. air153C_wtd.feed_dog(28)
  40. ]]
  41. function air153C_wtd.feed_dog(watchdogPin)
  42. local watchdogFeedDuration = 400
  43. gpio.set(watchdogPin,1)
  44. sys.timerStart(air153C_wtd.callback,watchdogFeedDuration,watchdogPin)
  45. end
  46. --[[
  47. 调用此函数关闭喂狗,谨慎使用!
  48. @api air153C_wtd.close_watch_dog(watchdogPin)
  49. @int watchdogPin设置看门狗控制引脚
  50. @return nil
  51. @usage
  52. air153C_wtd.close_watch_dog(28)
  53. ]]
  54. function air153C_wtd.close_watch_dog(watchdogPin)
  55. local watchdogStopDuration = 700
  56. gpio.set(watchdogPin,1)
  57. sys.timerStart(air153C_wtd.callback,watchdogStopDuration,watchdogPin)
  58. end
  59. return air153C_wtd