天天看點

STM32 IAP 序列槽線上更新源碼詳解

本博文基于本人修改的代碼進行編寫如需代碼,
請到[代碼下載下傳](https://download.csdn.net/download/qq_36257571/10695681)自行下載下傳。
           

詳細内容不做過多說明,請到以下網址進行檢視,已經介紹的很詳細了。

http://www.openedv.com/forum.php?mod=viewthread&tid=276033&highlight=STM32%2BIAP

http://www.21ic.com/app/mcu/201701/700207.htm

下面着重介紹下本人修改源代碼部分,下載下傳官方例程,本人使用的是STM32F103C8T6晶片,修改ROM空間大小0x2000,

STM32 IAP 序列槽線上更新源碼詳解

修改宏定義

STM32 IAP 序列槽線上更新源碼詳解

更改啟動檔案,更改方法:更改的檔案滑鼠右鍵彈出視窗->Options for File ‘statup_stm32f10x_md.s’… ->選中紅框裡的兩項(‘√’第一次選中後為深黑色,再次點選為淺灰色,淺灰色時點選确認,其中的原因我也不太懂,你們可以試試)

STM32 IAP 序列槽線上更新源碼詳解
STM32 IAP 序列槽線上更新源碼詳解
STM32 IAP 序列槽線上更新源碼詳解

修改堆棧位址0x8002000

STM32 IAP 序列槽線上更新源碼詳解

至此,BootLoader修改完畢直接下載下傳進去就可以了。

下面修改測試程式,我用STM32CUBEMAX直接配置了一個流水燈程式,修改程式:

主函數添加位址偏移:上面我們設定的位址大小為0x2000,是以位址偏量設定為0x2000

STM32 IAP 序列槽線上更新源碼詳解

兩種方法:

SCB->VTOR = FLASH_BASE | 0x2000;     
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x2000);
           

由于本人在HAL庫沒有找到對應的函數,是以使用了第一種方法。

接下來修改配置,起始位址設定為0x8002000,大小我就随便設了個,夠用又不超出rom範圍。

STM32 IAP 序列槽線上更新源碼詳解

生成.BIN檔案配置,詳細說明請參考博文

Keil MDK5生成 .bin檔案的簡單教程

STM32 IAP 序列槽線上更新源碼詳解

編譯過後就可以使用SecureCRT軟體進行下載下傳了:(安裝部分資源包内有詳細說明)

STM32 IAP 序列槽線上更新源碼詳解
STM32 IAP 序列槽線上更新源碼詳解

配置好後點選下一步:晶片複位會接受到如下資料

STM32 IAP 序列槽線上更新源碼詳解

按數字鍵盤1如下:

STM32 IAP 序列槽線上更新源碼詳解

進行下載下傳點選Transfer->Send Ymodem->打開下載下傳的.bin檔案,下載下傳完成提示如下:

STM32 IAP 序列槽線上更新源碼詳解

點選鍵盤數字3便可運作流水燈程式。官網例程本人研究的還不明白...........

第一次寫博文,有不足之處還請大家多多指正!
           
STM32 IAP 序列槽線上更新源碼詳解

掃碼關注公衆号“TechChenSir”免費擷取下載下傳位址

繼續閱讀