复位

概述

复位(Reset)用于将系统恢复到某种初始状态,可用于错误恢复、系统软重启等功能。

复位类型

芯片支持多种复位种类。

复位类型

描述

使用方法

Chipen

芯片使能产生的复位

参考 芯片使能

POR reset

上电产生的复位

参考 欠压保护

BOR reset

欠压产生的复位

DSLP

系统进入深度睡眠时产生的复位

参考 低功耗开发

System reset

系统提供的软件复位

参考 软件复位

Warm reset

CPU 提供的软件复位

-

IWDG reset

独立看门狗超时产生的复位

参考 WDG

WDG reset

系统看门狗超时产生的复位

参考 WDG

复位域

电源域

PD_AON

PD_AON

PD_AON & PD_AON_OTP

PD_SYSON & PD_SOC

范围

RTC

备份寄存器,Retention RAM, Wake pin, Trap pin

IWDG, OTPC

PD_SYSON 电源域和 PD_SOC 电源域的所有外设

Chipen

Y

Y

Y

Y

POR reset

Y

Y

Y

Y

BOR reset

N

N

Y

Y

DSLP

N

N

Y

Y

system reset

Y*

N

Y*

Y

warm reset

N

N

N

Y

IWDG reset

N

N

Y

Y

WDG reset

N

N

N

N

  • Y: 表示当复位事件发生时,相应的模块会被复位。

  • N: 表示当复位事件发生时,相应的模块不会被复位。

  • Y*: 表示当复位事件发生时,相应的模块默认会被复位,但可以配置成不被复位。

  • N*: 表示当复位事件发生时,相应的模块默认不会被复位,但可以配置成被复位。

备注

  • 可以通过寄存器 REG_AON_SYSRST_MSK 控制 RTC, IWDG, OTPC 是否在 system reset 下复位。该寄存器定义和默认值位于 sysreg_aon.h 中。

  • Warm reset 可以通过 REG_LSYS_SW_RST_CTRL 获取关于复位域更多的灵活性。该寄存器定义和默认值位于 sysreg_lsys.h 中。

获取启动原因

用户可以通过 BOOT_Reason() 函数来获取启动原因。参考 启动原因

保留复位前的信息

用户可以将关键数据存储在位于 AON 电源域的备份寄存器或 Retention RAM 中,防止数据因复位而丢失。

备注

以下复位类型依旧会导致备份寄存器或 Retention RAM 中的数据丢失。

  • chipen

  • POR reset

备份寄存器

Realtek 提供了 BKUP_REG0, BKUP_REG1, BKUP_REG2BKUP_REG3 共 4 个 32 位备份寄存器供使用。用户可以使用 API 来操作备份寄存器。

备注

系统可能会使用备份寄存器的某些位,用户使用前可以搜索 SDK 来确认该位是否被使用。

API

BKUP_Write

项目

描述

功能

将值写入到对应备份寄存器中

参数

  • DwordIdx:要操作的备份寄存器,可以是 BKUP_REG0 ~ BKUP_REG3

  • WriteVal:要写入的值

返回值

BKUP_Read

项目

描述

功能

读取对应备份寄存器的值

参数

  • DwordIdx:要操作的备份寄存器,可以是 BKUP_REG0 ~ BKUP_REG3

返回值

对应备份寄存器的值

BKUP_Set

项目

描述

功能

写入对应备份寄存器中的某些比特位

参数

  • DwordIdx:要操作的备份寄存器,可以是 BKUP_REG0 ~ BKUP_REG3

  • BitMask:要写入的比特位

返回值

BKUP_Clear

项目

描述

功能

清除对应备份寄存器中的某些比特位

参数

  • DwordIdx:要操作的备份寄存器,可以是 BKUP_REG0 ~ BKUP_REG3

  • BitMask:要清除的比特位

返回值

Retention RAM

用户可以使用变量 RRAM_DEV 来将数据存储到 Retention RAM。该变量的结构体定义是 RRAM_TypeDef, 位于 sysreg_lsys.h 中。其结构体成员 RRAM_USER_RSVD 可以被用户自由使用。

备注

建议用户优先使用备份寄存器,只有在数据量较大时使用 Retention RAM 。

软件复位触发方式

用户可以通过调用函数 System_Reset() 的方法或者发命令来执行 system reset。函数 System_Reset() 的定义如下:

项目

描述

功能

触发系统软件复位

参数

返回值

也可以向任意 CPU 下发以下命令触发系统软件复位:

AT+RST