您好!
我希望我的应用知道上次复位的原因。
例如、为了检测上电复位、我想使用 systemREG1->SYSESR 寄存器中的 PORST 位。
问题在于、出于某种原因、PORST 由 sys_startup.c 中的初始化代码复位
/* check for power-on reset condition */
/*SAFETYMCUSW 139 S MR:13.7 <APPROVED> "Hardware status bit read check" */
if ((SYS_EXCEPTION & POWERON_RESET) != 0U)
{
/* USER CODE BEGIN (12) */
/* USER CODE END */
/* Add condition to check whether PLL can be started successfully */
if (_errata_SSWF021_45_both_plls(PLL_RETRIES) != 0U)
{
/* Put system in a safe state */
handlePLLLockFail();
}
/* clear all reset status flags */
SYS_EXCEPTION = 0xFFFFU;
/* USER CODE BEGIN (13) */
/* USER CODE END */
/* USER CODE BEGIN (14) */
/* USER CODE END */
/* USER CODE BEGIN (15) */
/* USER CODE END */
/* continue with normal start-up sequence */
}
在将 SYS_EXCEPTION = 0xFFFFU 注释到该行时、我突然访问 SYSESR 寄存器上的 POR 位。
我的问题:
-为什么 在 sys_startup 中清除 SYS_exception ?
-删除 sys_startup 中重置 SYS_exception 的行是否安全?
-有没有更好的方法来获得复位原因?
此致、
加布里埃尔








