ZHCUAN6E October 2022 – May 2025 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
发生器件复位后,在硬件中会捕捉复位处理期间的最低级别复位原因,以便应用软件可以在启动应用程序时查询复位原因并采取任何适当的措施。最低级别复位原因会编码到 SYSCTL 复位原因寄存器的一个 5 位字段中。复位原因寄存器的内容总是在读取后被清除,如果读取后没有发生复位,则在读取后返回零。表 2-9 给出了复位原因编码。
| 复位 | 器件模块复位 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 复位级别 | 原因 ID | 复位原因 | NRST/SWD 禁用 | SHUTDN STOREx | 内核稳压器 | 调试子系统 | LFCLK 状态 | SRAM | BCR 执行 | IOMUX | EVENT、DMA、FLASHCTL | 外设 | CPU | |
| 0x00 | 0 | 自上次读取后无复位 | ||||||||||||
| POR | 0x01 | 1 | VDD < POR- 违例 | R | R | R | R | R | R | R | R | R | R | R |
| PMU 修整奇偶校验故障 | ||||||||||||||
| SHUTDNSTOREx 奇偶校验故障(如果存在) | ||||||||||||||
| 0x02 | 2 | NRST 引脚复位 (>1s) | R | R | R | R | R | R | R | R | R | R | R | |
| 0x03 | 3 | 软件触发 POR | R | R | R | R | R | R | R | R | R | R | R | |
| BOR | 0x04 | 4 | VDD < BOR- 违例 | R | R | R | R | R | R | R | R | R | ||
| 0x05 | 5 | 从 SHUTDOWN 模式唤醒(如果存在) | R | R | R | R | R | R(1) | R | R | R | |||
| 0x06 | 6 | 保留 | ||||||||||||
| 0x07 | 7 | 保留 | ||||||||||||
| BOOTRST | 0x08 | 8 | 非 PMU 修整奇偶校验故障 | R | R | R | R | R | R | R | ||||
| 0x09 | 9 | 致命时钟故障 | R | R | R | R | R | R | R | |||||
| 0x0A | 10 | 保留 | ||||||||||||
| 0x0B | 11 | 保留 | ||||||||||||
| 0x0C | 12 | NRST 引脚复位 (<1s) | R | R | R | R | R | R | ||||||
| 0x0D | 13 | 软件触发 BOOTRST | R | R | R | R | R | R | ||||||
| 0x0E | 14 | WWDT0 违例 | R | R | R | R | R | R | ||||||
| 0x0F | 15 | 保留 | ||||||||||||
| SYSRST | 0x10 | 16 | BSL 退出(如果存在) | R | R | R | R | R | ||||||
| 0x11 | 17 | BSL 进入(如果存在) | R | R | R | R | R | |||||||
| 0x12 | 18 | 保留 | ||||||||||||
| 0x13 | 19 | 保留 | ||||||||||||
| 0x14 | 20 | 无法纠正的闪存 ECC 错误(如果存在) | R | R | R | R | ||||||||
| 0x15 | 21 | CPULOCK 违例 | R | R | R | R | ||||||||
| 0x16 | 22 | 保留 | ||||||||||||
| 0x17 | 23 | 保留 | ||||||||||||
| 0x18 | 24 | 保留 | ||||||||||||
| 0x19 | 25 | 保留 | ||||||||||||
| 0x1A | 26 | 调试触发 SYSRST | R | R | R | R | ||||||||
| 0x1B | 27 | 软件触发 SYSRST | R | R | R | R | ||||||||
| CPURST | 0x1C | 28 | 调试触发 CPURST | R | ||||||||||
| 0x1D | 29 | 软件触发 CPURST | R | |||||||||||
| 0x1E | 30 | 保留 | ||||||||||||
| 0x1F | 31 | 保留 | ||||||||||||
如果同时出现两个复位原因,则优先选择并报告最低的原因复位 ID 值。例如,如果 WWDT0 违例(原因 0x12)与 VDD < BOR- 违例(原因 0x04)同时发生,则报告的复位原因为 BOR- 违例(原因 0x04),因为这是一个较低级别的复位,所以会清除器件状态的其他方面。
复位原因编码可在应用程序启动期间实现简单的软件处理。复位原因值可由应用软件读取并测试是否处于特定的值范围内,从而确定是否出现以下原因:
以下示例说明了如何测试复位原因,以便在复位后启动应用程序时采取特定的操作:
// Read reset cause into SRAM variable
uint8_t cause = RESETCAUSE;
// Handle device re-configuration based on reset cause level
if (cause!=0)
{
if (cause<0x04)
{
// NRST/SWD disable state was lost
// SHUTDNSTOREx memory state was lost
// PMU/VCORE domain state was lost
// RTC/LFXT/LFCLK state was lost
}
if (cause<0x1C)
{
// The peripherals were reset
}
}