复位

概述

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

复位类型

芯片支持多种复位种类。

RTL8721Dx:

复位类型

描述

使用方法

CHIP_EN

芯片使能产生的复位

参考 芯片使能

POR

上电产生的复位

BOR

欠压产生的复位

参考 欠压保护

DSLP

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

参考 低功耗开发

System reset

系统提供的软件复位

参考 软件复位

Warm reset

CPU 提供的软件复位

-

IWDG reset

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

参考 Watchdog

WDG reset

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

参考 Watchdog

复位域

RTL8721Dx:

范围

RTC

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

其他外设

CHIP_EN

Y

Y

Y

POR

Y

Y

Y

BOR

N

N

Y

DSLP

N

N

Y

System reset

N

N

Y

IWDG reset

N

N

Y

WDG reset

N

N

Y

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

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

备注

  • Warm reset 在系统启动时会被配置为 reset 所有 CPU 而不仅仅是本地 CPU。参考 Bootloader 中的 Peripheral_Reset() 函数获取 warm reset 会 reset 的外设。

获取启动原因

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

保留复位前的信息

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

备注

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

  • CHIP_EN

  • POR

备份寄存器

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

项目

描述

功能

将对应备份寄存器中的某些比特位置 1

参数

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

  • BitMask:要写入的比特位

返回值

BKUP_Clear

项目

描述

功能

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

参数

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

  • BitMask:要清除的比特位

返回值

Retention RAM

RTL8721Dx:

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

备注

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

软件复位触发方式

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

项目

描述

功能

触发系统软件复位

参数

返回值

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

AT+RST