3. PMU 复位功能介绍

本章节介绍PMU的复位功能。

芯片复位功能有以下几种:
  1. 主动复位 -> “主动复位”;

  2. 长按复位 -> “长按复位”;

  3. MCLR短按复位 -> “MCLR短按复位”;


3.1. 主动复位

用户可以调取

  1. chip_reset()

  2. 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复位配置“

AD24N_MCLR复位配置

3.4. 复位源获取

一、AD24N复位源函数如下:

函数bool is_reset_source(enum RST_REASON index);

获取复位源需要在电源初始化power_early_flowing()之后调用,否则获取的唤醒源不准确,其中参数:

1、index:复位源;
2、返回值:1:传入的参数是本次的复位源,0:传入的参数非本次复位源;