已經對啟動文有了大致了解,再來看看系統在復位過程中做了哪些工作。復位程序如下:
1 ; Reset handler 2 3 Reset_Handler PROC 4 5 EXPORT Reset_Handler [WEAK] 6 7 IMPORT SystemInit 8 9 IMPORT __main 10 11 LDR R0, =SystemInit 12 13 BLX R0 14 15 LDR R0, =__main 16 17 BX R0 18 19 ENDP
在復位程序內,聲明了外部文件標號SystemInit和__main(__main 是一個標准的C語言庫函數,用於初始化用戶堆棧,最終還是進入main),因此需要在外部文件中按照這個標號名寫出對應的函數,否則編譯器將報錯。在庫文件system_stm32f10x.c內就寫了SystemInit()函數;在main.c 文件內也寫了一個main()函數。所以主函數是main這個名字。
系統復位后進入復位函數,首先調用SystemInit()函數,初始化STM32系統時鍾,然后再進入我們熟悉的main()函數。