3. PMU 复位功能介绍
3.1. 主动复位
用户可以调取
chip_reset()
system_reset()
3.2. 长按复位
用户调用power_reset_init()初始化长按复位功能。
一、AD14N / AD15N / AC104N 长按复位功能
函数void power_reset_init(const struct reset_param *rs_param)
此函数实现长按复位初始化,该接口需要在电源初始化的最后调用(必须要在唤醒口设置后设置)
其中rs_param结构体内各参数含义为:
1、en:是否使能长按复位功能; 2、mode:复位模式; 0:等待IO电平翻转后再复位; 1:长按时间到了立即复位; 3、level:长按复位电平选择; 0:低电平; 1:高电平; 4、iomap:复位IO(如IO_PORTA_01) 5、hold_time:长按复位需要的时间; 0:1s; 1:2s; 2:4s; 3:8s; 4~7:16s;SDK默认没有打开该功能。用户若需要该功能,只需在唤醒IO设置后配置即可。![]()
长按复位配置
二、AD17N与AD18N 长按复位功能
函数void gpio_longpress_pin0_reset_config(u32 pin, u32 level, u32 time, u8 release, u8 protect)
此函数实现长按复位初始化,该接口需要在电源初始化的最后调用,其中参数:
1、pin:复位I/O;(如:IO_PORTA_01) 2、level:触发方式 ①、0:下降沿触发; ②、1:上升沿触发; 3、time:时间 ①、0:disable; ②、1:1s复位; ③、2:2s复位; ④、4:4s复位; ⑤、8:8s复位; ⑥、16:16s复位 3、release:系统释放方式 ①、0:等待电平翻转后复位; ②、1:立即复位; 4、protect:该参数给0即可;三、AD24N 长按复位功能
函数void gpio_longpress_pin0_reset_config(u32 pin, u32 level, u32 time, u32 release, enum gpio_mode pullup_down_mode)
此函数实现长按复位初始化,该接口需要在电源初始化的最后调用,其中参数:
1、pin:复位I/O;(如:IO_PORTA_01) 2、level:触发方式 ①、0:下降沿触发; ②、1:上升沿触发; 3、time:时间 ①、0:disable; ②、1:1s复位; ③、2:2s复位; ④、4:4s复位; ⑤、8:8s复位; ⑥、16:16s复位 3、release:系统释放方式 ①、0:等待电平翻转后复位; ②、1:立即复位; 4、pullup_down_mode:该IO初始状态;f 用户根据gpio_mode枚举选择对应的IO状态即可; 选择PORT_KEEP_STATE 即不操作该IO状态。
3.3. MCLR短按复位
AD24N支持MCLR复位(MCLR与PA8绑定)。
用户可以在power_app.c里打开p33_mclr_sw(1)即可。
![]()
AD24N_MCLR复位配置
3.4. 复位源获取
一、AD24N复位源函数如下:
函数bool is_reset_source(enum RST_REASON index);
获取复位源需要在电源初始化power_early_flowing()之后调用,否则获取的唤醒源不准确,其中参数:
1、index:复位源; 2、返回值:1:传入的参数是本次的复位源,0:传入的参数非本次复位源;