介绍关于WDG(看门狗)初始化、重载(喂狗)、关闭等功能所调用的一些抽象函数。

API列表

函数名称 功能描述
hal_wdg_init 初始化指定看门狗
hal_wdg_reload 重载指定看门狗,喂狗
hal_wdg_finalize 关闭指定看门狗

hal_wdg_init

定义描述
定义 描述
函数原型 int32_t hal_wdg_init(wdg_dev_t *wdg)
描述 初始化指定看门狗
参数 wdg:看门狗设备描述
返回值 返回成功或失败,返回0表示看门狗初始化成功,非0表示失败

调用示例

具体请参见使用示例

hal_wdg_reload

定义描述
定义 描述
函数原型 int32_t hal_wdg_reload(wdg_dev_t *wdg)
描述 重载指定看门狗,喂狗
参数 wdg:看门狗设备描述
返回值 返回成功或失败,返回0表示看门狗重载成功,非0表示失败

调用示例

具体请参见使用示例

hal_wdg_finalize

定义描述
定义 描述
函数原型 int32_t hal_wdg_finalize(wdg_dev_t *wdg)
描述 关闭指定看门狗
参数 wdg:看门狗设备描述
返回值 返回成功或失败,返回0表示看门狗关闭成功,非0表示失败

调用示例

具体请参见使用示例

wdg_dev_t数据结构

typedef struct {
    uint8_t      port;   /* wdg port */
    wdg_config_t config; /* wdg config */
    void        *priv;   /* priv data */
} wdg_dev_t;

wdg_config_t数据结构

typedef struct {
    uint32_t timeout; /* Watchdag timeout ms */
} wdg_config_t;

使用示例

#include <aos/hal/wdg.h>

#define WDG1_PORT_NUM 1

/* define dev */
wdg_dev_t wdg1;

int application_start(int argc, char *argv[])
{
    int ret = -1;
    wdg_config_t wdg_cfg;
    static int count = 0;

    /* wdg port set */
    wdg1.port = WDG1_PORT_NUM;

    /* set reload time to 1000ms */
    wdg1.config.timeout = 1000; /* 1000ms */

    /* init wdg1 with the given settings */
    ret = hal_wdg_init(&wdg1);
    if (ret != 0) {
        printf("wdg1 init error !\n");
    }

    while(1) {
        /* clear wdg about every 500ms */
        hal_wdg_reload(&wdg1);

        if (count == 20) {
            break;
        }

        /* sleep 500ms */
        aos_msleep(500);
        count++;
    };

    /* finalize wdg1 */
    hal_wdg_finalize(&wdg1);
}
说明
  • port为逻辑端口号,其与物理端口号的对应关系见具体的对接实现。
  • 移植前,请新建hal_wdg_xxmcu.chal_wdg_xxmcu.h的文件,并将这两个文件放到platform/mcu/xxmcu/hal目录下。在hal_wdg_xxmcu.c中实现所需要的hal函数,hal_wdg_xxmcu.h中放置相关宏定义。