.. _wdg-index: WDG ================== 总览 ---------------- 本示例主要介绍watch dog的使用方法。 准备及使用步骤 ---------------- - 使用步骤: - 插入将板子的USB电源线; - 编译 ``customer_app/periperal/demo_wdg`` 工程并下载工程; - 打开一个串口终端窗口(波特率为2000000,用于接收和发送uart消息)。 - 串口终端输入 ``demo_hosal_wdg_feed`` ,表示启动 wdg的喂狗demo。 .. figure:: imgs/image1.png :alt: - 此时demo会在死循环中持续喂狗,所以程序不会重启并一直在while循环中。 - 重启设备,串口输入 ``demo_hosal_wdg_not_feed``, 来启动wdg,但是不喂狗。 - 此时程序会在wdg 定时时间到时重启 .. figure:: imgs/image2.png :alt: 应用实例 ---------------- - 示例代码 :: #include #include #include #include void demo_hosal_wdg_feed(void) { hosal_wdg_dev_t wdg; int ret = -1; /* wdg port set */ wdg.port = 0; /* max timeout is 65535ms */ wdg.config.timeout = 3000; /* init wdg with the given settings */ hosal_wdg_init(&wdg); blog_info("wdg will not trig reboot\r\n"); /* feed wdg every 2s */ while(1) { hosal_wdg_reload(&wdg); vTaskDelay(2000); } hosal_wdg_finalize(&wdg); } - 通过 ``hosal_wdg_dev_t`` 定义一个wdg设备,并设置超时时间,调用 `` hosal_wdg_init ``初始化wdg。 :: hosal_wdg_dev_t wdg; wdg.port = 0; /* max timeout is 65535 ms */ wdg.config.timeout = 8000; //设置超时时间位8000ms hosal_wdg_init(&wdg); - 通过 ``hosal_wdg_reload`` 来重置看门狗定时器 :: hosal_wdg_reload(&wdg); - 通过 ``hosal_wdg_finalize`` 接口来失能看门狗 :: hosal_wdg_finalize(&wdg);