日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Stm32 IAP程序编写及用户程序编写

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Stm32 IAP程序编写及用户程序编写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Stm32f10x系列MCU Bootloader?流程

芯片:stm32f103ze

所需軟件:SecureCRT?(用于使用Ymode協議發送Application文件),其實應該我們自己寫個上位機,這里借助SecureCRT來充當我們自己寫的應用程序(用于驗證Bootloader是否成功)。

keil版本:μVision V5.11.0.0

用途:使用通信接口用于軟件的更新(免去拆機繁瑣的流程)。

BootLoader其實看上去挺復雜的樣子,但也還好~仔細查找網上的資料都

有很多介紹,以下為自己做bootloader的過程以及應注意的事項,幫助

大家少走彎路~

請先下載我上傳的資源:?

http://download.csdn.net/detail/jimoxiaosage/9451290

首先確定自己要做個串口能更新固件的程序出來~,聽說名字叫Bootloader,網上也是挺多資料,網上資料找了找,看了看基本了解其流程:

在程序起始位置(0x0800 0000)寫Bootloader程序,在另一個偏移位置寫應用程序(比如0x0800 3000,那么bootloader?的程序空間就只能被限定為0x3000大小,超出了就不行咯)。在Bootloader程序中通過檢測標志位(按鍵按下,或是Flash中的數據等等)來判斷是否進行更新。(此處的更新指的是更新用戶應用程序區域,即0x0800 3000?之后的flash?數據)通過串口,使用Ymodem協議將要更新的鏡像--xxx.bin燒寫入Flash,燒寫完成后程序跳轉到應用程序(0x0800 3000?),固件更新完成。

?

BootLoader工程Stm32官網上有,當然也可以使用我的(有簡單修改過):

在這個工程中需要注意的地方:

1.用戶程序起始地址:#define ApplicationAddress????0x8003000?。(該地址需要與另一個工程-用戶應用程序的起始地址一樣,具體看后面)。

2.需要配置燒寫時擦除的位置,如圖:

?


?

?

3.默認程序地址就是0x8000 0000?,大小需要修改為0x3000,如下圖:

?


?

?

4.注意串口是否可用,該工程串口引腳PA9,PA10,特別注意時鐘是否配置正確(主頻72M)否則會出現亂碼~~~。

5.附帶我修改過的程序流程圖,按鍵就是PA0,


?

//-----------------------------------?以上?BootLoader?做好了-----------------------------------

下面就需要寫個應用程序來驗證該BootLoader~~

如下是我的工程需要注意的地方:

1.修改keil配置,將起始地址修改為?0x0800 3000,大小根據自己的flash大小來設定,如圖:


?

?

2.同樣要擦除的Flash區域也要勾選下(不然debug時會把本來寫進去的Bootloader擦掉了~)如圖:

?


?

?

?

3.由于我們將程序起始地址改成了0x0800 3000,復位時其實仍然是從0x0800 0000開始跑的~所以要在main函數最前面加:NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x3000); 同時,還需要修改如下定義的值:

#define VECT_TAB_OFFSET??????????????????0x3000

改值原本為0,修改為偏移量。

4.使用keil自帶的fromelf?來輸出***.bin文件~,這部分網上找的挺多都不能用的,可能跟keil軟件版本有關吧,詳細問題還是查看keil幫助文檔會比較清楚,以下貼上我的設置:


?

?

fromelf --bin --output=1s.bin ..\OutPut\Stm32f103Templete.axf

,這樣編譯完成就會出現一個1s.bin的文件咯~

簡單看下我的main函數~實際就是個閃燈的程序~(可以把時間修改為500ms,再生成一個500ms.bin文件來驗證我們的Bootloader)

//--------------------------------?以上為用戶應用程序部分------------------------------

以上步驟結束后我們會有:

1.Stm3210xIAP???(Bootloader)

2.Stm3210xIapApplication?(user application)

3.1s.bin???500ms.bin

4.SecureCRT軟件

首先先把1的工程編譯,燒到芯片中~,接下來把2的工程編譯燒到芯片中~此時如果PA2接個LED燈會看到燈交替閃爍。

接著打開SecureCRT軟件,設置好相應波特率,打開串口~,

接著PA0接到地(模擬一個按鍵按下)再將開發板上電,此時就會進入固件升級,打印相關信息~此時芯片等待Ymodem協議發送文件過來,使用secureCRT軟件,send Ymodem,選中我們所需要更新的文件如:1s.bin,燒寫完成后會發現LED燈變成每1s交替閃爍了。

可以重復以上過程燒寫500ms.bin文件試試~。

?

以上整個過程結束。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Stm32 IAP程序编写及用户程序编写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。