STM32F10xxx支持三種復位形式,分別為系統(tǒng)復位、上電復位和備份區(qū)域復位。
一、系統(tǒng)復位
系統(tǒng)復位將復位所有寄存器至它們的復位狀態(tài)。
當發(fā)生以下任一事件時,產生一個系統(tǒng)復位:
NRST引腳上的低電平(外部復位)
窗口看門狗計數終止(WWDG復位)
獨立看門狗計數終止(IWDG復位)
軟件復位(SW復位)
低功耗管理復位 可通過查看RCC_CSR控制狀態(tài)寄存器中的復位狀態(tài)標志位識別復位事件來源。
軟件復位通過將Cortex?-M3中斷應用和復位控制寄存器中的SYSRESETREQ位置’1’,可實現(xiàn)軟件復位。請參考Cortex?-M3技術參考手冊獲得進一步信息。低功耗管理復位在以下兩種情況下可產生低功耗管理復位:
在進入待機模式時產生低功耗管理復位:通過將用戶選擇字節(jié)中的nRST_STDBY位置’1’將使能該復位。這時,即使執(zhí)行了進入待機模式的過程,系統(tǒng)將被復位而不是進入待機模式。
在進入停止模式時產生低功耗管理復位:通過將用戶選擇字節(jié)中的nRST_STOP位置’1’將使能該復位。這時,即使執(zhí)行了進入停機模式的過程,系統(tǒng)將被復位而不是進入停機模式。
關于用戶選擇字節(jié)的進一步信息,請參考STM32F10xxx閃存編程手冊。
二、電源復位
電源復位當以下事件中之一發(fā)生時,產生電源復位:
上電/掉電復位(POR/PDR復位)
從待機模式中返回 圖4) 電源復位將復位除了備份區(qū)域外的所有寄存器。
(見圖中復位源將最終作用于RESET引腳,并在復位過程中保持低電平。復位入口矢量被固定在地址0x0000_0004。芯片內部的復位信號會在NRST引腳上輸出,脈沖發(fā)生器保證每一個(外部或內部)復位源都能有至少20μs的脈沖延時;當NRST引腳被拉低產生外部復位時,它將產生復位脈沖。
三、備份域復位
備份區(qū)域擁有兩個專門的復位,它們只影響備份區(qū)域(見圖4)。
當以下事件中之一發(fā)生時,產生備份區(qū)域復位。
軟件復位,備份區(qū)域復位可由設置備份域控制寄存器 (RCC_BDCR)(見6.3.9節(jié))中的BDRST位產生。
在VDD和VBAT兩者掉電的前提下,VDD或VBAT上電將引發(fā)備份區(qū)域復位。
四、復位的標志位
五、復位標志位檢索/判斷什么原因導致的復位
標志位判斷的代碼由官方庫中給定代碼如下:
FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG);//FlagStatus 分為SET和RESET兩種;
/**
當然判斷完后,我們需要將復位類型的標志置位以防后期出現(xiàn)重復多次判斷void RCC_ClearFlag(void);//清除復位執(zhí)行函數
/**
在使用時,只需要執(zhí)行如下語句即可:
if(RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET)
當然軟件復位的代碼如下:
六、STM32軟件復位方法
在Cortex-M3權威指南中有這么一句話這里有一個要注意的問題:從SYSRESETREQ 被置為有效,到復位發(fā)生器執(zhí)行復位命令,往往會有一個延時。在此延時期間,處理器仍然可以響應中斷請求。但我們的本意往往是要讓此次執(zhí)行到此為止,不要再做任何其它事情了。所以,最好在發(fā)出復位請求前,先把FAULTMASK 置位。所以最好在將FAULTMASK 置位才萬無一失。
void mcuRestart(void)
責任編輯:彭菁
-
寄存器
+關注
關注
31文章
5253瀏覽量
119212 -
STM32
+關注
關注
2258文章
10828瀏覽量
352505 -
編程
+關注
關注
88文章
3521瀏覽量
93276
發(fā)布評論請先 登錄
相關推薦
評論