WDG

总览

本示例主要介绍watch dog的使用方法。

准备及使用步骤

  • 使用步骤:
  • 插入将板子的USB电源线;
  • 编译 customer_app/periperal/demo_wdg 工程并下载工程;
  • 打开一个串口终端窗口(波特率为2000000,用于接收和发送uart消息)。
  • 串口终端输入 demo_hosal_wdg_feed ,表示启动 wdg的喂狗demo。
  • 此时demo会在死循环中持续喂狗,所以程序不会重启并一直在while循环中。
  • 重启设备,串口输入 demo_hosal_wdg_not_feed, 来启动wdg,但是不喂狗。
  • 此时程序会在wdg 定时时间到时重启

应用实例

  • 示例代码
#include <stdio.h>
#include <cli.h>
#include <hosal_wdg.h>
#include <blog.h>


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);