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

ARQ方式的三種形式
三種類型的復(fù)位
STM32F103復(fù)位的作用及其復(fù)位形式
STM32的三種復(fù)位類型
STM32實(shí)現(xiàn)復(fù)位的三種常用方式問題
STM32的三種boot模式介紹
STM32的三種Boot模式及驗(yàn)證資料分享
STM32的三種Boot模式的差異
STM32的三種Boot模式及驗(yàn)證

【STM32學(xué)習(xí)筆記】技巧2 - STM32的復(fù)位類型及區(qū)別

評(píng)論