最近項(xiàng)目遇到了一個(gè)問題:一個(gè)子系統(tǒng),具有IAP升級(jí)的功能,Bootloader位于0x08000000,也就是說系統(tǒng)在運(yùn)行過程允許復(fù)位。但是,該子系統(tǒng)需要在上電的過程中處理某項(xiàng)任務(wù)(而且只需要上電的那一次)。
問題來了:我們?nèi)绾闻袛嘞到y(tǒng)是第一次上電復(fù)位?
解決的辦法有很多種,但是最簡(jiǎn)單的辦法就是獲取系統(tǒng)復(fù)位來源,詳情請(qǐng)看文章。
其實(shí),這篇文章的內(nèi)容也能回答之前一位網(wǎng)友的問題,不知你會(huì)不會(huì)閱讀本文。
Ⅰ
RCC復(fù)位和時(shí)鐘控制
RCC:Reset and Clock Control
相信大家都知道RCC是什么,主要就是講述復(fù)位和時(shí)鐘的章節(jié)。先來講述一下復(fù)位種類。
STM32的復(fù)位大概分為三類:系統(tǒng)復(fù)位、電源復(fù)位和后備域復(fù)位。
系統(tǒng)復(fù)位:
1. NRST引腳上的低電平(外部復(fù)位)
2. 窗口看門狗計(jì)數(shù)終止(WWDG復(fù)位)
3. 獨(dú)立看門狗計(jì)數(shù)終止(IWDG復(fù)位)
4. 軟件復(fù)位(SW復(fù)位)
5. 低功耗管理復(fù)位
電源復(fù)位:
1. 上電/掉電復(fù)位(POR/PDR復(fù)位)
2. 從待機(jī)模式中返回
備份區(qū)域復(fù)位:
1. 軟件復(fù)位,備份區(qū)域復(fù)位可由設(shè)置備份域控制寄存器(RCC_BDCR)中的BDRST位產(chǎn)生。
2. 在VDD和VBAT兩者掉電的前提下, VDD或VBAT上電將引發(fā)備份區(qū)域復(fù)位。
Ⅱ
RCC_CSR
CSR:Control/Status Register,即控制/狀態(tài)寄存器。
在STM32種,RCC的寄存器和功能因芯片的不同而不同,但RCC_CSR寄存器是眾多STM32種都具有的一個(gè)。
這個(gè)寄存器就會(huì)記錄各種復(fù)位的狀態(tài),我們只需要讀取這個(gè)寄存器即可知道是什么樣子引起的復(fù)位。
Ⅲ
源代碼實(shí)例
上面說了那么多,其實(shí)大家都容易理解,但只有真正實(shí)測(cè)過源代碼,才能真正起到掌握的作用。
為了方便某些懶惰的朋友,我將提供測(cè)試源代碼,方便大家學(xué)習(xí)和掌握。
本文源代碼給予前面文章【CM3內(nèi)核復(fù)位與系統(tǒng)復(fù)位區(qū)別及應(yīng)用】提供的源代碼的基礎(chǔ)上修改而來。
現(xiàn)在主要看下測(cè)試源代碼和測(cè)試效果:
各種情況打印結(jié)果:
1.上電復(fù)位打印信息
CSR = C000000
5.POR/PDR reset
6.PIN reset
Demo...
Demo...
2.按鍵(PIN)復(fù)位打印信息
CSR = 4000000
6.PIN reset
Demo...
Demo...
3.內(nèi)核復(fù)位 NVIC_CoreReset();打印信息
CSR = 0
Demo...
Demo...
4.系統(tǒng)復(fù)位 NVIC_SysReset();打印信息
CSR = 14000000
4.Software reset
6.PIN reset
Demo...
Demo...
到了這一步,相信大家基本明白了。但是,還有值得進(jìn)一步分析的地方,這里我算是給大家安排的作業(yè)(只有愿意動(dòng)腦思考的人,才會(huì)有進(jìn)步)。
為了方便大家學(xué)習(xí),我將源代碼提供給大家下載(雖只有STM32F1,但其他系列類似)。
STM32F103ZE(Keil)_復(fù)位來源(寄存器版):
http://pan.baidu.com/s/1hskScba
推薦閱讀:
CM3(STM32)內(nèi)核復(fù)位與系統(tǒng)復(fù)位區(qū)別及應(yīng)用
有一種修飾符能使變量在處理器復(fù)位而不被初始化
Ⅳ
最后
微信搜索“EmbeddDeveloper” 或者掃描下面二維碼、關(guān)注,在我的底部菜單查看更多精彩內(nèi)容!
長(zhǎng)按識(shí)別二維碼 關(guān)注
原文標(biāo)題:一篇很簡(jiǎn)單,有必要了解的文章 - STM32復(fù)位來源(寄存器版)
文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
寄存器
+關(guān)注
關(guān)注
31文章
5336瀏覽量
120232 -
STM32
+關(guān)注
關(guān)注
2270文章
10895瀏覽量
355744 -
IAP
+關(guān)注
關(guān)注
2文章
163瀏覽量
24279
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論