|
已經(jīng)對(duì)啟動(dòng)文有了大致了解,再來(lái)看看系統(tǒng)在復(fù)位過(guò)程中做了哪些工作。復(fù)位程序如下:
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
在復(fù)位程序內(nèi),聲明了外部文件標(biāo)號(hào)SystemInit和__main(__main 是一個(gè)標(biāo)準(zhǔn)的C語(yǔ)言庫(kù)函數(shù),用于初始化用戶堆棧,最終還是進(jìn)入main),因此需要在外部文件中按照這個(gè)標(biāo)號(hào)名寫出對(duì)應(yīng)的函數(shù),否則編譯器將報(bào)錯(cuò)。在庫(kù)文件system_stm32f10x.c內(nèi)就寫了SystemInit()函數(shù);在main.c 文件內(nèi)也寫了一個(gè)main()函數(shù)。所以主函數(shù)是main這個(gè)名字。
系統(tǒng)復(fù)位后進(jìn)入復(fù)位函數(shù),首先調(diào)用SystemInit()函數(shù),初始化STM32系統(tǒng)時(shí)鐘,然后再進(jìn)入我們熟悉的main()函數(shù)。更多嵌入式學(xué)習(xí),歡迎咨詢余工Q2859780203
|
|