STM 32在復(fù)位時(shí),有嚴(yán)重BUG:
1.上電復(fù)位和外置的看門(mén)狗芯片重啟復(fù)位是無(wú)法區(qū)分開(kāi)來(lái)的!RCC_FLAG_BORRST, RCC_FLAG_PINRST, RCC_FLAG_LPWRRST三個(gè)都復(fù)位了!
2.這樣當(dāng)要在上電復(fù)位初始化關(guān)鍵代碼時(shí),這些代碼看門(mén)狗復(fù)位則不用重啟,這個(gè)關(guān)鍵代碼會(huì)導(dǎo)致應(yīng)用業(yè)務(wù)的異常!若兩個(gè)中斷分不開(kāi),導(dǎo)致系統(tǒng)異??撮T(mén)狗復(fù)位時(shí)影響業(yè)務(wù)!
/*
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可能為看門(mén)狗重啟
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
*/
/*****************************************************************************************
函 數(shù) 名: SysRstSrcRecord
參 數(shù): 無(wú)
返 回 值: 系統(tǒng)重啟次數(shù)記錄
描 述: 記錄系統(tǒng)重啟的方式記錄
作 者: 李少雄
版 本: 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);
}