machine.WDT

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

    构造函数

    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)