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地址獲取棧頂指針,再從0x0000 0004獲取復(fù)位中斷入口地址(引導(dǎo)代碼基地址),如下圖所示,我們隨便打開一個(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í)行,也就是說在執(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)注
6061文章
44891瀏覽量
646358 -
mcu
+關(guān)注
關(guān)注
146文章
17817瀏覽量
359891 -
GD32
+關(guān)注
關(guān)注
7文章
418瀏覽量
25121
發(fā)布評(píng)論請(qǐng)先 登錄
兆易創(chuàng)新GD32 MCU閃耀2025慕尼黑上海電子展

GD32E230F6燒錄無法運(yùn)行到main函數(shù),為什么?怎么解決?
【GD32 MCU入門教程】GD32 MCU GPIO 結(jié)構(gòu)與使用注意事項(xiàng)

【GD32 MCU 入門教程】七、分散加載說明

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

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

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

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

【GD32 MCU 入門教程】二、GD32 MCU 燒錄說明(1)ISP 燒錄

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

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

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

評(píng)論