GD32 MCU啟動(dòng)后如何運(yùn)行到main函數(shù)入口?你是否也有這樣的疑慮。在執(zhí)行到main函數(shù)之前MCU干了哪些事情呢?下面為大家解答。
MCMCU上電后,首先會(huì)根據(jù)BOOT0和BOOT1的狀態(tài)判斷從主Flash/SRAM/ISP中啟動(dòng),如果BOOT0為低電平,MCU將會(huì)從主Flash中啟動(dòng),即主Flash中的數(shù)據(jù)會(huì)被映射到0x0000 0000地址,ARM處理器將會(huì)從0x0000 0000地址獲取棧頂指針,再?gòu)?x0000 0004獲取復(fù)位中斷入口地址(引導(dǎo)代碼基地址),如下圖所示,我們隨便打開(kāi)一個(gè)bin文件,前4個(gè)字節(jié)為MSP堆棧指針,之后四個(gè)字節(jié)為復(fù)位中斷入口地址,之后為中斷向量表。

MCU找到堆棧指針和復(fù)位中斷入口地址之后,將會(huì)加載執(zhí)行復(fù)位中斷,復(fù)位中斷函數(shù)定義在.s啟動(dòng)文件中,具體定義如下所示,進(jìn)入到復(fù)位中斷函數(shù)中之后,首先執(zhí)行SystemInit系統(tǒng)初始化函數(shù),該函數(shù)主要為系統(tǒng)時(shí)鐘配置函數(shù),之后跳轉(zhuǎn)到main函數(shù)進(jìn)行執(zhí)行,也就是說(shuō)在執(zhí)行到main函數(shù)之前,已經(jīng)進(jìn)行了系統(tǒng)時(shí)鐘配置。執(zhí)行完復(fù)位中斷函數(shù)之后,MCU將會(huì)進(jìn)入到main函數(shù)進(jìn)行執(zhí)行。
;/* reset Handler */ Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44969瀏覽量
649188 -
mcu
+關(guān)注
關(guān)注
146文章
17932瀏覽量
363176 -
GD32
+關(guān)注
關(guān)注
7文章
420瀏覽量
25365
發(fā)布評(píng)論請(qǐng)先 登錄
兆易創(chuàng)新GD32 MCU閃耀2025慕尼黑上海電子展

作為國(guó)產(chǎn)MCU龍頭,兆易創(chuàng)新GD32如何在工業(yè)市場(chǎng)開(kāi)疆拓土?
GD32E230F6燒錄無(wú)法運(yùn)行到main函數(shù),為什么?怎么解決?
【GD32 MCU入門(mén)教程】GD32 MCU GPIO 結(jié)構(gòu)與使用注意事項(xiàng)

【GD32 MCU 入門(mén)教程】GD32 MCU 常見(jiàn)外設(shè)介紹(14)RTC 模塊介紹

GD32 MCU 入門(mén)教程】GD32 MCU 常見(jiàn)外設(shè)介紹(12)FMC 模塊介紹

【GD32 MCU 入門(mén)教程】二、GD32 MCU 燒錄說(shuō)明(3)脫機(jī)燒錄

【GD32 MCU 入門(mén)教程】二、GD32 MCU 燒錄說(shuō)明 (2)SWD/JTAG在線下載

【GD32 MCU 入門(mén)教程】二、GD32 MCU 燒錄說(shuō)明(1)ISP 燒錄

【GD32 MCU 入門(mén)教程】一、GD32 MCU 開(kāi)發(fā)環(huán)境搭建(3)使用 Embedded Builder 開(kāi)發(fā) GD32

【GD32 MCU 入門(mén)教程】一、GD32 MCU 開(kāi)發(fā)環(huán)境搭建(2)使用 IAR 開(kāi)發(fā) GD32

【GD32 MCU 入門(mén)教程】一、GD32 MCU 開(kāi)發(fā)環(huán)境搭建(1)使用Keil開(kāi)發(fā)GD32

評(píng)論