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