STM 32在復位時,有嚴重BUG:
1.上電復位和外置的看門狗芯片重啟復位是無法區分開來的!RCC_FLAG_BORRST, RCC_FLAG_PINRST, RCC_FLAG_LPWRRST三個都復位了!
2.這樣當要在上電復位初始化關鍵代碼時,這些代碼看門狗復位則不用重啟,這個關鍵代碼會導致應用業務的異常!若兩個中斷分不開,導致系統異??撮T狗復位時影響業務!
/*
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);
-
STM32
+關注
關注
2289文章
11011瀏覽量
362302
發布評論請先 登錄
stm32復位電路工作原理
【STM32學習筆記】技巧2 - STM32的復位類型及區別

評論