7.28. SYSTEM_RESET_REASON

Overview

提供系统复位使用方法和常见问题。

7.28.1. 应用示例

示例演示:

  • 长按复位可4秒或8秒复位。

example: 进入 apps/demo/demo_DevKitBoard/include/demo_config.h ,开启宏 USE_SYSTEM_RESET_REASON_TEST_DEMO

Note

  • 1、使用说明

系统上电运行后自动调用 system_reset_reason_get(); 来获取系统复位信息,同时也打印出系统复位原因,例如:

========= system reset reason: SOFT =========

  • 2、系统复位原因

system_reset_reason_get() 函数返回值对应的位表示不同的复位原因,可获取复位原因后做其他的操作(比如IO唤醒则检测是不是长按还是短按,或者闹钟唤醒时更改闹钟时间等),对应CPU的头文件 ``system_reset_reason.h ``

enum sys_reset_type {
SYS_RST_NONE = 0,
SYS_RST_12V = BIT(1),//1.2V内核复位
SYS_RST_WDT = BIT(2),//看门狗复位
SYS_RST_VCM = BIT(3),//复位键复位
SYS_RST_SOFT = BIT(4),//软件复位
SYS_RST_ALM_WKUP = BIT(5),//闹钟唤醒复位
SYS_RST_PORT_WKUP = BIT(6),//IO唤醒复位
SYS_RST_LONG_PRESS = BIT(7),//长按复位
SYS_RST_VDDIO_PWR_ON = BIT(8),//上电复位
SYS_RST_VDDIO_LOW_PWR = BIT(9),//低电压复位
};

复位原因解析:

  • 1.2V内核复位:一般不会出现。

  • 看门狗复位:程序跑飞或者程序死循环导致不能清狗。

  • 复位键复位:芯片的VCM复位引脚被置高电平(3.3V左右)。

  • 软件复位:系统调用cpu_reset()或者system_reset()。

  • 闹钟唤醒复位:使用RTC并且使能闹钟唤醒功能后软关机到达唤醒时间。

  • IO唤醒复位:软关机后IO被触发唤醒。

  • 上电复位:一般正常通电启动就是上电复位。

  • 低电压复位:电压不足。

7.28.2. 常见问题

  • 长按复位IO,默认根据配置边缘选择性的开启内部上下拉(下降沿则上拉,上升沿则下拉),因此长按复位硬件IO使用和唤醒IO不一样时,可以不用外接上下拉电阻;当长按复位硬件IO使用和唤醒IO为同一个IO时,长按功能不受影响,但IO需要外接上下拉来维持IO唤醒时的软关机后IO电平。

  • 长按复位功能是board.c配置好对应程序后,系统上电运行就自动加载长按功能,因此系统运行后可以长按按键来完成复位功能。

7.28.3. API Reference