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

MCU找到堆棧指針和復位中斷入口地址之后,將會加載執行復位中斷,復位中斷函數定義在.s啟動文件中,具體定義如下所示,進入到復位中斷函數中之后,首先執行SystemInit系統初始化函數,該函數主要為系統時鐘配置函數,之后跳轉到main函數進行執行,也就是說在執行到main函數之前,已經進行了系統時鐘配置。執行完復位中斷函數之后,MCU將會進入到main函數進行執行。
;/* reset Handler */ Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP
-
單片機
+關注
關注
6043文章
44622瀏覽量
638533 -
mcu
+關注
關注
146文章
17317瀏覽量
352640 -
GD32
+關注
關注
7文章
413瀏覽量
24469
發布評論請先 登錄
相關推薦
GD32E230F6燒錄無法運行到main函數,為什么?怎么解決?
【GD32 MCU入門教程】GD32 MCU GPIO 結構與使用注意事項

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

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

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

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

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

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

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

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

GD32F427 bootloader添加rt-thread系統后,跳轉到app沒有執行main()函數是怎么回事?
GD32 ADC轉換時間如何計算?

GD32 MCU ISP失敗的原因

評論