概述

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

复位的种类

芯片支持多种复位种类。

复位类型

描述

使用方法

Chipen

芯片使能产生的复位

参考 芯片使能

POR reset

上电产生的复位

参考 欠压保护

BOR reset

欠压产生的复位

参考 欠压保护

DSLP

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

参考 低功耗开发

System reset

系统提供的软件复位

参考 软件复位

Warm reset

CPU 提供的软件复位

-

IWDG reset

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

参考 WDG

WDG reset

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

参考 WDG

复位域

电源域

范围

Chipen

POR reset

BOR reset

DSLP

system reset

warm reset

IWDG reset

WDG reset

PD_AON

RTC

Y

Y

N

N

N*

N*

N

N*

PD_AON

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

Y

Y

N

N

N

N

N

N

PD_AON PD_AON_OTP

IWDG OTPC

Y

Y

Y

Y

Y*

Y*

Y

Y*

PD_SYSON PD_SOC

所有 SYSON 电源域的外设 所有 SOC 电源域的外设

Y

Y

Y

Y

N*

N*

Y

N*

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

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

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

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

备注

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

  • 可以通过 REG_LSYS_SYSRST_MSK0REG_LSYS_SYSRST_MSK1 控制 PD_SYSON 和 PD_SOC 电源域的外设是否在 system reset 和 WDG reset 下复位。 该寄存器定义和默认值位于 sysreg_lsys.h 中。

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

获取启动原因

用户可以通过 BOOT_Reason() 函数来获取启动原因。参考 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() 的定义如下:

System_Reset

项目

描述

功能

触发系统软件复位

参数

返回值

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

AT+RST