1. 程式人生 > >STM32 關於復位型別的判斷及軟體復位 bug

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) reset RCC_FLAG_PINRST:       Pin reset                      //NRST pin可能為看門狗重啟 RCC_FLAG_PORRST:      POR/PDR reset RCC_FLAG_SFTRST:      Software reset RCC_FLAG_IWDGRST:   Independent Watchdog reset RCC_FLAG_WWDGRST: Window Watchdog reset RCC_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);

} ---------------------  作者:love_maomao  來源:CSDN  原文:https://blog.csdn.net/love_maomao/article/details/8234084?utm_source=copy  版權宣告:本文為博主原創文章,轉載請附上博文連結!