CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

APP AON_WDT驱动

结构体

app_aon_wdt_params_t

结构体定义如下:

表 136 app_aon_wdt_params_t结构体成员
成员 描述 取值

aon_wdt_init_t init

AON_WDT需要的初始化配置

参考aon_wdt_init_t结构体

aon_aon_wdt_env_t aon_aon_wdt_env

仅用于记录初始化设备的句柄、相关参数和信号量等,不需要配置

详细信息请参考文件:
  • GR551x/GR5526/GR5x25:SDK_Folder\drivers\inc\hal\gr55xx_hal_aon_wdt.h_
  • GR533x:SDK_Folder\drivers\inc\hal\gr533x_hal_aon_wdt.h
  • GR5405:SDK_Folder\hal_drv\include\hal_aon_wdt.h

aon_wdt_init_t

表 137 aon_wdt_init_t结构体成员
成员 描述 取值

uint32_t counter

AON_WDT计数值。当计数值递减到0时,会复位系统

  • GR551x:0x0U ~ 0xFFFFFFFF

    说明:

    计数值与ms的换算关系counter / (32768 / 1000)

  • GR5526/GR5x25/GR533x/GR5405:0 ~ 0xFFFFFFFFU/ (SystemRngClock / 1000),单位:ms

    说明 :

    SystemRngClock为低速时钟频率(32.768 kHz),该时钟30s校准一次

uint32_t alarm_counter

闹钟值。当计数值递减到0时,会产生中断

  • GR551x:无意义
  • GR5526/GR5x25/GR533x/GR5405:0 ~ 0xFFFFFFFFU/ (SystemRngClock / 1000),单位:ms

    说明:

    SystemRngClock为低速时钟频率(32.768 kHz),该时钟30s校准一次

详细信息请参考文件:
  • GR551x/GR5526/GR5x25:SDK_Folder\drivers\inc\hal\gr55xx_hal_aon_wdt.h_
  • GR533x:SDK_Folder\drivers\inc\hal\gr533x_hal_aon_wdt.h
  • GR5405:SDK_Folder\hal_drv\include\hal_aon_wdt.h

枚举

app_aon_wdt_state_t

枚举定义如下:

表 138 app_aon_wdt_state_t枚举成员
成员 描述

APP_AON_WDT_INVALID = 0

AON WDT不可用

APP_AON_WDT_ACTIVITY = 1

AON WDT激活

详细信息请参考文件:SDK_Folder\drivers\inc\app_aon_wdt.h

接口函数

表 139 AON_WDT驱动接口函数
API 芯片
GR551x GR5526 GR5x25 GR533x GR5405

app_aon_wdt_init

Y

Y

Y

Y

Y

app_aon_wdt_deinit

Y

Y

Y

Y

Y

app_aon_wdt_refresh

Y

Y

Y

Y

Y

app_aon_wdt_init

表 140 app_aon_wdt_init接口
函数原型

uint16_t app_aon_wdt_init(app_aon_wdt_params_t *p_params, app_aon_wdt_evt_handler_t evt_handler)

功能说明

初始化AON WDT

输入参数
  • p_params:初始化参数的结构体指针
  • evt_handler:用户自己实现的中断回调函数
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

回调函数形式参照typedef void (*app_aon_wdt_evt_handler_t)(void);

HAL层已经实现中断标志位的清理,用户不用关心中断标志的清理,回调函数根据返回事件类型进行相应的处理即可。

app_aon_wdt_deinit

表 141 app_aon_wdt_deinit接口
函数原型

uint16_t app_aon_wdt_deinit(void)

功能说明

反初始化AON WDT

输入参数
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_aon_wdt_refresh

表 142 app_aon_wdt_refresh接口
函数原型

uint16_t app_aon_wdt_refresh(void)

功能说明

AON WDT喂狗,重新装载计数值

输入参数
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

示例工程

WDT

示例演示了WDT喂狗功能,工程路径:SDK_Folder\projects\peripheral\aon_wdt\app_aon_wdt_reset

流程图

首先初始化AON WDT模块,设置喂狗时间最大间隔2s内,alarm为1s,当1s未喂狗,将产生中断进行提示喂狗,2s未喂狗,将复位系统。示例工程每300 ms喂狗一次,喂狗10次。喂完后,1s将产生中断,2s将复位系统。

图 14 WDT喂狗功能实现流程

初始化参数

app_aon_wdt_params_t s_params;
#if (APP_DRIVER_CHIP_TYPE == APP_DRIVER_GR551X)
    s_params.init.counter = 32768 * 2 - 1;
    s_params.init.alarm_counter = 0x1F;
#else
    s_params.init.counter = 2000;
    s_params.init.alarm_counter = 1000;
#endif
    app_aon_wdt_init(&s_params, app_aon_wdt_evt_handler);
  • counter:2s不进行喂狗,系统将复位。
  • alarm_counter:闹钟值,当计数值递减到0时,产生中断。

重要函数

  • 初始化AON WDT
    app_aon_wdt_init(&s_params, app_aon_wdt_evt_handler)

    s_params:初始化参数结构体;app_aon_wdt_evt_handler:回调函数。

  • 喂狗
    app_aon_wdt_refresh()

    Counter重新计数。

测试验证

连接开发板到PC端,打开串口助手,连接串口,查看串口日志。可以看到10次正常喂狗,10次以后未进行正常喂狗开始复位系统。

[15:37:17.554] 
 0th feed dog.

[15:37:17.856] 
 1th feed dog.

[15:37:18.159] 
 2th feed dog.

[15:37:18.460] 
 3th feed dog.

[15:37:18.763] 
 4th feed dog.

[15:37:19.065] 
 5th feed dog.

[15:37:19.368] 
 6th feed dog.

[15:37:19.670] 
 7th feed dog.

[15:37:19.971] 
 8th feed dog.

[15:37:20.274] 
 9th feed dog.

System will reset.

扫描关注

打开微信,使用“扫一扫”即可关注。