stm32关于复位类型的判断及软件复位bug
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32 关于复位类型的判断及软件复位bug
STM 32在复位时,有严重BUG:
1. 上电复位和外置的看门狗芯片重启复位是无法区分开来的!RCC_FLAG_BORRST, RCC_FLAG_PINRST, RCC_FLAG_LPWRRST三个都复位了!
2. 这样当要在上电复位初始化关键代码时,这些代码看门狗复位则不用重启,这个关键代码会导致应用业务的异常!若两个中断分不开,导致系统异常看门狗复位时影响业务!/*RCC_FLAG_BORRST: POR/PDR or BOR reset
//Power-on/power-down reset (POR/PDR reset) or brownout (BOR) resetRCC_FLAG_PINRST: Pin reset //NRST pin可能为看门狗重启RCC_FLAG_PORRST: POR/PDR
resetRCC_FLAG_SFTRST: Software
resetRCC_FLAG_IWDGRST: Independent Watchdog resetRCC_FLAG_WWDGRST: Window Watchdog resetRCC_FLAG_LPWRRST: Low Power
reset*//********************************************************** ******************************* 函数名: SysRstSrcRecord 参数:
无返回值: 系统重启次数记录描述:
记录系统重启的方式记录作者:
李少雄版本:
V1.0 2012年11月12日
****************************************************************** ************************/u8 SysRstSrcRecord(u8
*pstRest){ //u8 uchInfoChange=0; pstRest[0] = RCC_GetFlagStatus(RCC_FLAG_BORRST);
pstRest[1] = RCC_GetFlagStatus(RCC_FLAG_PINRST); pstRest[2] = RCC_GetFlagStatus(RCC_FLAG_PORRST); pstRest[3] = RCC_GetFlagStatus(RCC_FLAG_SFTRST); pstRest[4] = RCC_GetFlagStatus(RCC_FLAG_IWDGRST); pstRest[5] =
RCC_GetFlagStatus(RCC_FLAG_WWDGRST);
pstRest[6] =
RCC_GetFlagStatus(RCC_FLAG_LPWRRST);
}。