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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

STM32串口IAP

發布時間:2023/12/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32串口IAP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、STM32編程方式

① 在線編程(ICP,In-Circuit Programming):
通過JTAG/SWD協議或者系統加載程序(Bootloader)下載用戶應用程序到微控制器中。
② 在程序中編程(IAP,In Application Programming):
通過任何一種通信接口(如IO端口,USB,CAN,UART,I2C,SPI等)下載程序或者應用數據到存儲器中。也就是說,STM32允許用戶在應用程序中重新燒寫閃存存儲器中的內容。然而,IAP需要至少有一部分程序已經使用ICP方式燒到閃存存儲器中(Bootloader)。在不需要操作硬件平臺的情況下實現升級(遠程)。
每種STM32芯片(M0,M3,M4),它們的主存儲器結構可能不一樣,但是他們都有一個叫“系統存儲器”的區域,此區域是留給ST自己用來存放芯片的bootloader程序,此程序在芯片出廠的時候已經固化在芯片內部。系統存儲器的Bootloader程序會通過串口1接受應用程序。

系統存儲器:只留給ST用來寫啟動程序代碼代碼。啟動程序代碼通過串口1接口實現對閃存存儲器的編程。
STM32啟動模式選擇

注意:使用系統存儲器需要將BOOT1和BOOT0引腳置為0、1。

二、ICP下載流程


JTAG/SWD下載,直接下載到FLASH指定區域。通過Keil或者IAR下載都是這種方式。
一般的程序執行流程

STM32的內部閃存(FLASH)地址起始于0x08000000,一般情況下,程序文件就從此地址開始寫入。0x08000004開始存放中斷向量表。當中斷來臨,STM32的內部硬件機制亦會自動將PC指針定位到“中斷向量表”處,并根據中斷源取出對應的中斷向量執行中斷服務程序。
①、STM32復位后,0X08000004地址取出復位中斷向量的地址,并跳轉到復位中斷服務程序。
②、在復位中斷服務程序執行完之后,會跳轉到我們的main函數。
③、main函數執行過程中,如果收到中斷請求(發生重中斷),此時STM32強制將PC指針指回中斷向量表處。
④、根據中斷源進入相應的中斷服務程序。
⑤、在執行完中斷服務程序以后,程序再次返回main函數執行。

三、IAP下載流程


通過Bootloader里面的UART、CAN、IIC等通信方式將應用程序(bin格式)燒到IAP應用程序存儲區域中。
IAP程序執行流程

①、STM32復位后,還是從0X08000004地址取出復位中斷向量的地址,并跳轉到復位中斷服務程序,在運行完復位中斷服務程序之后跳轉到IAP的main函數。
②、在執行完IAP以后(即將新的APP代碼寫入STM32的FLASH,灰底部分。新程序的復位中斷向量起始地址為0X08000004+N+M),跳轉至新寫入程序的復位向量表,取出新程序的復位中斷向量的地址,并跳轉執行新程序的復位中斷服務程序,隨后跳轉至新程序的main函數,如圖標號②和③所示。
④、在main函數執行過程中,如果CPU得到一個中斷請求,PC指針仍強制跳轉到地址0X08000004中斷向量表處,而不是新程序的中斷向量表
⑤、程序再根據我們設置的中斷向量表偏移量,跳轉到對應中斷源新的中斷服務程序中。
⑥、在執行完中斷服務程序后,程序返回main函數繼續運行。

四、IAP升級應用程序過程

1)檢查是否需要對應用代碼(實際的應用程序代碼)進行更新
2)如果不需要更新則轉到④)
3)執行更新操作
4)跳轉到應用代碼執行

注意:
①、新程序(APP)必須在IAP程序(bootloader)之后的某個偏移量為x的地址開始;
②、必須將新程序(APP)的中斷向量表相應的移動,移動的偏移量為x。

IAP就講到這里啦!!!

總結

以上是生活随笔為你收集整理的STM32串口IAP的全部內容,希望文章能夠幫你解決所遇到的問題。

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