主题中讨论的其他器件:HALCOGEN
void _c_int00 (void)
{
//在此处启用 EventBusExport、FlashEcc 和一些勘误表...
if ((SYS_EXception & powerON_RESET)!= 0U) /* SYSESR */
{
SYS_EXception = 0xFFFFFF;/*清除所有复位状态标志*/
}
如果((SYS_EXception & OSC_failure_reset)!= 0U)则为其他
{
}
如果((SYS_EXCE异常 和安全装置复位)!=0U)则为其他
{
if (watchdog_status!= 0U)
{
SYS_EXception = watchdog_reset;
}
其他
{
SYS_EXCE异常= ICEPICK_RESET;
}
}
否则((SYS_EXCE异常 和 CPU_RESET)!=0U)
{
SYS_EXception = CPU_RESET;
/*检查这是否是 stcSelfCheck 运行*/
if ((stcREG->STCSCSCR & 0xFU)== 0xAU) /*签名比较逻辑自检使能键*/
{
if ((stcREG->STCGSTAT & 0x3U)!= 0x3U)
{
stcSelfCheckFae(); /* STC 自检失败*/
}
其他 /* STC 自检已通过*/
{
stcREG->STCSCSCR = 0x05U; /*清除自检模式*/
stcREG->STCGSTAT = 0x3U; /*清除 STC 全局状态标志*/
esmREG->SR1[0U]= 0x08000000U;//清除 ESM 组1通道27状态标志*/
cpuSelfTest (STC_INTERVAL、STC_MAX_TIMEOUT、TRUE);
}
}
否则、如果((stcREG->STCGSTAT & 0x1U)== 0x1U) /*自检运行完成。 *
{
if ((stcREG->STCGSTAT & 0x2U)== 0x2U) /*测试失败*/
{
cpuSelfTestFae();
}
其他 /*成功完成 CPU 自检*/
{
stcREG->STCGSTAT = 0x1U;
fterSTC();
}
}
其他 /*软件写入 CPU 复位位引起的 CPU 复位*/
{
}
}
否则((SYS_EXception & SW_RESET)!= 0U) /*由于软件复位导致的复位。*/
{
}
其他 /*由从外部驱动低电平而导致的复位。*/
{
}
//检查 ESM 组3错误,初始化系统-时钟,使用 Efuse 自检的闪存设置,
//对内存自检控制器运行诊断检查,
//在 STC ROM 上运行并检查 PBIST,
//在 PBIST ROM 上运行并检查 PBIST,运行 stcSelfCheck
//....
}