APP AON_WDT驱动
结构体
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
| 成员 | 描述 | 取值 |
|---|---|---|
| uint32_t counter |
AON_WDT计数值。当计数值递减到0时,会复位系统 |
|
| uint32_t alarm_counter |
闹钟值。当计数值递减到0时,会产生中断 |
|
- 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
枚举定义如下:
| 成员 | 描述 |
|---|---|
| APP_AON_WDT_INVALID = 0 |
AON WDT不可用 |
| APP_AON_WDT_ACTIVITY = 1 |
AON WDT激活 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_aon_wdt.h。
接口函数
| 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
| 函数原型 | uint16_t app_aon_wdt_init(app_aon_wdt_params_t *p_params, app_aon_wdt_evt_handler_t evt_handler) |
|---|---|
| 功能说明 | 初始化AON WDT |
| 输入参数 |
|
| 返回值 | 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
| 函数原型 | uint16_t app_aon_wdt_deinit(void) |
|---|---|
| 功能说明 | 反初始化AON WDT |
| 输入参数 | |
| 返回值 | APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义 |
| 备注 |
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将复位系统。
初始化参数
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.