1.寫在前面
首先,你要知道STM32啟動文件中啟動流程,你就需要掌握一點匯編基礎知識。
匯編語言屬于機器語言,或者說低級語言,C語言屬于高級語言,所以,匯編和C語言在語法上差異很大。
如果你學底層開發,匯編的一些基礎知識需要掌握。不需要精通,但需要看懂常見的匯編代碼。
2.說明
STM32的啟動文件與編譯器有關,不同編譯器,它的啟動文件不同。
雖然啟動文件(匯編)代碼各有不同,但它們原理類似,都屬于匯編程序。
我們拿基于MDK-ARM的啟動文件來舉例,說一下要點內容。
3.分配堆棧
在基于MDK的啟動文件開始,有一段匯編代碼是分配堆棧大小的。
這里重點知道堆棧數值大小就行。還有一段AREA(區域),表示分配一段堆棧數據段。
數值大小可以自己修改,也可以使用STM32CubeMX數值大小配置:
在IAR中,是通過工程配置堆棧大小:
4.向量表
相信大家都知道向量表,先看匯編代碼:
這個向量表就是對應手冊中的那些內容:
我們需要知道這個地方中的復位,程序上電之后,是跳到Reset_Handler這個位置。
5.執行代碼
上面知道代碼是從Reset_Handler開始執行,我們看Reset_Handler匯編代碼:
在啟動的時候,執行了SystemInit這個函數。
之前標準外設庫在SystemInit這個函數初始化了系統時鐘,后面HAL庫單獨把那部分代碼提出來了。
執行完SystemInit函數,就跳轉到我們的main函數執行了。
-
STM32
+關注
關注
2270文章
10910瀏覽量
356606 -
編譯器
+關注
關注
1文章
1636瀏覽量
49173 -
復位
+關注
關注
0文章
172瀏覽量
24227 -
啟動流程
+關注
關注
0文章
14瀏覽量
6489
發布評論請先 登錄
相關推薦
評論