machine.WDT#

CanMV 的 WDT 看门狗模块,用于在应用程序崩溃且最终进入不可恢复状态时重启系统。一旦开始,当硬件运行期间没有定期进行喂狗(feed)就会在超时后自动复位。

machine.WDT#

构造函数#

from machine import WDT
wdt0 = WDT(id=1, timeout=4000, callback=on_wdt, context={})

通过指定的参数新建一个 WDT 对象

参数#

  • id: 这个看门狗对象必须初始化时必须指定 ID (0 ~ 2) 用于区分使用的看门狗。

  • timeout: 看门狗超时时间,单位为毫秒(ms)。

  • callback: (可选)可以在超时后执行的回调函数。

  • context: (可选)为回调函数传递的参数。

函数#

feed#

wdt0.feed()

喂狗,以防止其重置系统。

该应用应将该调用用于合适位置,并确保只在验证一切正常运行后才“喂养”看门狗。

参数#

返回值#

stop#

wdt0.stop()

停止当前看门狗对象

参数#

返回值#

例程#

例程 1 (基础使用)#

喂一次狗后便不再喂狗使得系统复位

import time
from machine import WDT

## '''
## test default wdt
wdt0 = WDT(id=0, timeout=3000)
print('into', wdt0)
time.sleep(2)
print(time.ticks_ms())
## 1.test wdt feed
wdt0.feed()
time.sleep(2)
print(time.ticks_ms())
## 2.test wdt stop
## wdt0.stop()

例程 2 (进阶使用)#

在回调函数中喂狗,系统正常运行

import time
from machine import WDT
def on_wdt(self):
    print(self.context(), self)
    self.feed()
    ## release WDT
    #self.stop()

## test callback wdt
wdt1 = WDT(id=1, timeout=4000, callback=on_wdt, context={})
print('into', wdt1)
time.sleep(2)
print(time.ticks_ms())
## 1.test wdt feed
wdt1.feed()
time.sleep(2)
print(time.ticks_ms())
## 2.test wdt stop
## wdt1.stop()
## print('stop', wdt1)
## 3.wait wdt work
while True:
    print('idle', time.ticks_ms())
    time.sleep(1)