最近項(xiàng)目遇到了一個(gè)問(wèn)題:一個(gè)子系統(tǒng),具有IAP升級(jí)的功能,Bootloader位于0x08000000,也就是說(shuō)系統(tǒng)在運(yùn)行過(guò)程允許復(fù)位。但是,該子系統(tǒng)需要在上電的過(guò)程中處理某項(xiàng)任務(wù)(而且只需要上電的那一次)。
問(wèn)題來(lái)了:我們?nèi)绾闻袛嘞到y(tǒng)是第一次上電復(fù)位?
解決的辦法有很多種,但是最簡(jiǎn)單的辦法就是獲取系統(tǒng)復(fù)位來(lái)源,詳情請(qǐng)看文章。
其實(shí),這篇文章的內(nèi)容也能回答之前一位網(wǎng)友的問(wèn)題,不知你會(huì)不會(huì)閱讀本文。
Ⅰ
RCC復(fù)位和時(shí)鐘控制
RCC:Reset and Clock Control
相信大家都知道RCC是什么,主要就是講述復(fù)位和時(shí)鐘的章節(jié)。先來(lái)講述一下復(fù)位種類(lèi)。
STM32的復(fù)位大概分為三類(lèi):系統(tǒng)復(fù)位、電源復(fù)位和后備域復(fù)位。
系統(tǒng)復(fù)位:
1. NRST引腳上的低電平(外部復(fù)位)
2. 窗口看門(mén)狗計(jì)數(shù)終止(WWDG復(fù)位)
3. 獨(dú)立看門(mén)狗計(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í)例
上面說(shuō)了那么多,其實(shí)大家都容易理解,但只有真正實(shí)測(cè)過(guò)源代碼,才能真正起到掌握的作用。
為了方便某些懶惰的朋友,我將提供測(cè)試源代碼,方便大家學(xué)習(xí)和掌握。
本文源代碼給予前面文章【CM3內(nèi)核復(fù)位與系統(tǒng)復(fù)位區(qū)別及應(yīng)用】提供的源代碼的基礎(chǔ)上修改而來(lái)。
現(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,但其他系列類(lèi)似)。
STM32F103ZE(Keil)_復(fù)位來(lái)源(寄存器版):
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ù)位來(lái)源(寄存器版)
文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
- 
                                寄存器
                                +關(guān)注
關(guān)注
31文章
5522瀏覽量
128510 - 
                                STM32
                                +關(guān)注
關(guān)注
2302文章
11108瀏覽量
370272 - 
                                IAP
                                +關(guān)注
關(guān)注
2文章
165瀏覽量
25732 
發(fā)布評(píng)論請(qǐng)先 登錄
?SN74HCT595 8位移位寄存器技術(shù)解析與應(yīng)用指南
    
TPIC6595 8位功率移位寄存器技術(shù)文檔摘要
    
?TPIC6B595 8位功率移位寄存器技術(shù)文檔總結(jié)
    
如何通過(guò)CYUSB3014的設(shè)備寄存器讀取主機(jī)發(fā)起的數(shù)據(jù)傳輸?shù)腁CK?如何通過(guò)寄存器讀取主機(jī)發(fā)送的復(fù)位命令?
使用寄存器點(diǎn)亮LED燈
    
STM32F743的canfd錯(cuò)誤寄存器,TEC,REC等信息怎么復(fù)位?
74HC594-Q100;74HCT594-Q100帶輸出寄存器的8位移位寄存器規(guī)格書(shū)
    
STC15系列常用寄存器匯總免費(fèi)下載
XILINX FPGA CLB單元之移位寄存器
    
          
        
        
STM32復(fù)位來(lái)源(寄存器版)
                
 
           
            
            
                
            
評(píng)論