開發stm32 M3/M4系列一般都是在IDE下開發,通常程式入口都是main函數,但是在執行main函數之前,mcu到底做了哪些工作,就是本文描述的内容。
MCU上電啟動第一件事情,就是确定CPU位址及堆棧位址,通過Boot引腳配置。stm32f407的FLASH位址0x0800 0000—0x080F FFFF,合計1兆位元組空間,為主FLASH空間。一般固件都燒錄位址從0x0800 0000處開始,也可以通過指定固件位址,從别的位址開始,這種用法多用于BootLoader啟動方式。
啟動流程
硬體引腳配置為從主FLASH空間啟動,上電啟動瞬間,硬體自動從位址0x0800 0000處取出堆棧指針,這個指針位址=0x2000 0000 + RW Data Size + ZI Data Size,從位址0x0800 0004處取出PC指針,然後開始執行啟動檔案初始化程式,初始化執行完成以後跳轉到main主函數執行。
關鍵記憶體配置設定圖:
