用stm32開發的人都新增過啟動檔案吧,一般是keil mdk給我們預設新增的,但是如果要公升級換代,還是要手工新增或者修改下,這時候就必須要弄明白它的啟動檔案裡到底是什麼鬼了,不然不明不白的就去修改它,肯定會出問題的啦。
在一大堆注釋後,它首先對棧和堆的大小進行定義,並在**區的起始處建立中斷向量表,從__vectors 開始到__vectors_end結束。
其第乙個表項是棧 頂位址,第二個表項是復位中斷服務入口位址。假設stm32被設定為從內部flash啟動中斷向量表起始地位為0x8000000, 則棧頂位址存放於0x8000000處,而復位中斷服務入口位址存放於0x8000004處。當stm32遇到復位訊號後,則從0x80000004處取出復位中斷服務入口位址繼而執行復位中斷服務程式,然後跳轉__main函式,最後來到c的世界。
下面的14個表項為系統異常(實際只用了11個)的中斷服務入口位址。在下面就是外部中斷的服務入口了。
我們會看到這些dcd指令,它的作用是開闢一段空間,其意義等價於c語言中的位址符「&」。開始建立的中斷向量表則類似於使用c語.其每乙個成員都是乙個函式指標,分別指向各個中斷服務函式。
STM32 啟動檔案
先來看看啟動 中的偽操作和偽指令 equ 用於定義常量,相當於c中的巨集定義 如stack size equ 0x00000400 define stack size 0x00000400 align 位元組對齊方式 align 3 export 相當於宣告了乙個全域性變數 export vecto...
stm32啟動檔案
這是st提供的3個啟動檔案,分別適用於不同容量的stm32晶元。這三個檔案為 startup stm32f10x ld.s startup stm32f10x md.s startup stm32f10x hd.s 其中,ld.s適用於小容量 產品 md.s適用於中等容量產品 hd適用於大容量產品 ...
stm32的啟動檔案
libraries cmsis core cm3 startup arm資料夾下是由彙編編寫的系統啟動檔案,不同的檔案對應不同的晶元型號。cl 互聯型產品,stm32f105 107系列 vl 超值型產品,stm32f100系列 xl 超高密度 容量 產品,stm32f101 103系列 ld 低密...