當執行main函式的時候,晶元不是直接執行main函式的,還有乙個啟動的過程
m3的啟動方式由boot0和boot1選擇,可以有三種啟動方式
最常用的應該是第一種,就是將程式儲存在片內的flash上,掉電後程式不會消失。
boot引腳的設定不同,晶元復位後起始位址就不同,選擇從flash啟動的時候,其復位位址就是0x08000000,cortex-m3核心規定,起始位址必須放置堆頂指標,也就是msp,所以0x08000000-0x08000004放置的是堆頂指標,0x080000004就是中斷向量表的入口位址,系統復位後,會自動從起始位址的下乙個32bit後邊取出中斷向量表的起始位址,並且進入復位中斷,執行完復位中斷後跳轉到main函式執行程式。
至於為什麼flash的起始位址是0x08000000,是因為晶元進行了位址對映,就是將0x08000000對映到了0x00000000上邊,同時0x08000000還保持這訪問功能,也就是說0x0800000有兩個訪問位址,乙個是本身,另乙個就是0x00000000。
如果選擇了ram作為啟動方式,那麼就是將0x20000000對映到0x0000000上邊,原位址同樣有訪問功能
stm32啟動過程
三 總結 這三種模式請看下列圖示 三個不同作用的空間在微控制器裡面佔了三個空間,微控制器引導哪個空間資源啟動,由boot1和boot0決定!正常來說一般是從flash啟動!啟動的程式是在sram上執行!有乙個很關鍵資料結構的知識點,執行時sram會分成以下四個部分 常量區,堆,棧,靜態儲存區!例如 ...
STM32 啟動過程簡述
根據啟動模式分析的結論 1 通過boot引腳設定可以將中斷向量表定位於sram區,即起始位址為0x02000000,同時復位後pc指標位於0x02000000處 2 通過boot引腳設定可以將中斷向量表定位於flash區,即起始位址為0x08000000,同時復位後pc指標位於0x08000000處...
STM32啟動過程分析
硬體 stm32f1系列 軟體環境 keil 4.54 注 本文中提到的rtos以rt thread為例,不涵蓋所有rtos的情況 在keil mdk中新建工程時會根據所選的device自動生成啟動 檔案startup.s,該檔案的作用可根據其頭部的注釋看出 this module performs...