已經對啟動文有了大致了解,再來看看系統在復位過程中做了哪些工作。復位程序如下:
; 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 是一個標準的C語言庫函數,用于初始化用戶堆棧,最終還是進入main),因此需要在外部文件中按照這個標號名寫出對應的函數,否則編譯器將報錯。在庫文件system_stm32f10x.c內就寫了SystemInit()函數;在main.c 文件內也寫了一個main()函數。所以主函數是main這個名字。
系統復位后進入復位函數,首先調用SystemInit()函數,初始化STM32系統時鐘,然后再進入我們熟悉的main()函數。更多嵌入式學習,歡迎咨詢余工Q2859780203
|