我们的芯片都有SYSCON_RSR寄存器,里面列出了所有该芯片支持的复位方式。
比如下图是171的复位方式。
我们知道所有的复位都会让代码从头开始运行,这个是CPU被复位(PC=0)的效果。那芯片内各个模块寄存器的内容是不是也都会被复位呢?是不是各种复位的效果都一样呢?
还是以171为例来说明。
复位源/复位模块 | CPU | IWDT | ISOSC | IMOSC | EMOSC | HFOSC | CKM | RTC | LVD | Flash | UREGn |
WWDT |
|
|
|
|
| ||||||
EFL_ERR |
|
|
|
|
|
|
| ||||
RAM_ERR |
|
|
|
|
|
| |||||
CPUFAULT |
| ||||||||||
SWRST |
|
|
|
|
|
|
|
|
| ||
CPURST |
| ||||||||||
EMCKM |
|
|
|
|
| ||||||
IWDT |
|
|
|
|
| ||||||
EXTRST |
|
|
|
|
|
|
|
|
| ||
LVR |
|
|
|
|
|
| |||||
POR |
|
|
|
|
|
|
|
|
|
|
|
和用户使用关系比较大的有
-
RTC只有在POR复位时会被复位。注意:这里说的RTC不是整个模块,KEY,EVTRG,EVPS会被任何复位方式复位,其他如控制寄存器(CR,CCR),时间配置(TIMR,DATR),闹铃配置(ALR)等只能通过POR复位。
-
SYSCON中UREG寄存器,只有在POR时会被复位