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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

STM32F103C8在应用编程(IAP)介绍及实现

發(fā)布時間:2023/12/20 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F103C8在应用编程(IAP)介绍及实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1,ISP和IAP介紹和比較

STM32F103單片機默認支持ISP(在系統(tǒng)編程In System Programming, ISP),即通過ISP軟件(Flash_Loader_Demonstrator)通過USART1向Flash燒寫程序。它的實現(xiàn)方式是通過單片機的Boot0和Boot1引腳來讓單片機進入系統(tǒng)存儲器啟動方式(ISP啟動),系統(tǒng)存儲器中是廠商提供的bootload固件。這種方式得優(yōu)點是使用廠商的bootload和下載軟件,方便簡單。但缺點是必須通過硬件引腳設(shè)置,無法實現(xiàn)在線升級。

IAP(在應(yīng)用編程(In Application Programming, IAP)是另一種可下載固件的方式,它可以實現(xiàn)在線升級,但需要自己開發(fā)bootload。單片機啟動模式使用主Flash啟動。

下圖是STM32單片機的3種啟動方式:(通過Boot0和Boot1引腳設(shè)置選擇)

ISP模式,單片機上電啟動后,會直接執(zhí)行用戶程序;

IAP模式,單片機上電會先運行bootloader,bootloader決定是下載固件還是執(zhí)行用戶程序。

?

2,IAP的Flash分配情況

Flash中需要有2塊固件,分別是bootload和application,如下圖:

具體Flash分配如下:

?

3,bootload實現(xiàn)的技術(shù)要點

在工程中需要設(shè)置Flash和Ram空間如下:

?

定義application的起始地址

#define ApplicationAddress??? 0x8002000 // 8K

?

跳轉(zhuǎn)到application的代碼:

typedef? void (*pFunction)(void);

static void start_application()

{

? /* Jump to user application */

? uint32_t JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);

? pFunction Jump_To_Application = (pFunction) JumpAddress;

? /* Initialize user application's Stack Pointer */

? __set_MSP(*(__IO uint32_t*) ApplicationAddress);

? Jump_To_Application();

}

?

4,application實現(xiàn)的技術(shù)要點

在工程中需要設(shè)置Flash和Ram空間如下:

?

因為0x08000000處存儲的是bootload的中斷向量表,application的中斷向量表存儲在在0x08002000,所以需要在main函數(shù)開始處,執(zhí)行中斷向量offset設(shè)置。

? NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x2000);

?

而且bootload下載固件是用的bin文件,我們需要通過執(zhí)行如下命令生成bin文件

C:\Keil\ARM\ARMCC\bin\fromelf.exe --bin -o? ..\Output\application.bin ..\Output\application.axf

在Keil中如下設(shè)置,可在編譯完成后自動生成。

?

5,固件燒錄步驟

1,燒錄bootload

使用Flash_Loader_Demonstrator工具下載bootload.hex到單片機

?

2,下載application

使用Hypertrm下載application.bin到單片機

?

Hypertrm 的串口設(shè)置如下:

單片機上電,bootloader啟動

輸入1,bootload進入Download Image模式

選擇菜單Transfer下的Send File…

選擇要下載的程序application.bin,協(xié)議選擇Ymodem

點擊Send,開始傳輸

等待傳輸完成后,輸入3啟動application

?

ISP軟件Flash_Loader_Demonstrator,超級終端Hypertrm,STM32F103C8T6的bootload和application的完整工程代碼可從下面的分享中下載。

https://download.csdn.net/download/tanzj123/14964219

?

總結(jié)

以上是生活随笔為你收集整理的STM32F103C8在应用编程(IAP)介绍及实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。