[STM32入門]---利用ST提供的USB例程實(shí)現(xiàn)USBIAP功能_第1頁(yè)
[STM32入門]---利用ST提供的USB例程實(shí)現(xiàn)USBIAP功能_第2頁(yè)
[STM32入門]---利用ST提供的USB例程實(shí)現(xiàn)USBIAP功能_第3頁(yè)
[STM32入門]---利用ST提供的USB例程實(shí)現(xiàn)USBIAP功能_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、STM32入門利用ST提供的USB例程實(shí)現(xiàn)USBIAP功厶匕冃能我們知道ST推出的Cortex-M3平臺(tái)STM32內(nèi)部有兩個(gè)Flash區(qū)域,一是SystemFlash,ST官方保留的一個(gè)區(qū)域,用于存放IAP代碼。該區(qū)域不對(duì)用戶開(kāi)放,僅提供UART的通訊接口用于IAP升級(jí);另一個(gè)區(qū)域是UserFlash,這一部分是供用戶自由使用的。STM32自帶USB2.0Device接口,如果需要通過(guò)USB接口來(lái)實(shí)現(xiàn)IAP功能需要如何做呢?這里介紹如何利用STSTM32xxUSBDevelopmentKit提供的DFU代碼來(lái)實(shí)現(xiàn)上述功能。我用STM3210EVB來(lái)演示這個(gè)功能。閱讀前請(qǐng)下下載下列代碼壓縮包和應(yīng)

2、用軟件:1、STM3210B-EVALdemonstrationsoftwarev1.1.zipSTM3210B-EVALdemonstrationsoftwarev1.1.zip(文件大?。?.15M)ST官方的下載路徑:HYPERLINK /sto/stonline/products/support/micro/files/um0435.zip2、STM32F10 xxxUSBdeveloperkitv1.0.zipSTM32F10 xxxUSBdeveloperkitv1.0.zip(文件大小:461K)ST官方的下載路徑:HYPERLINK /sto/stonline/products

3、/support/micro/files/um0424.zip3、DfuSeUSBDeviceFirmwareUpgradev2.2.zipDfuSeUSBDeviceFirmwareUpgradev2.2.zip(文件大小:7.85M)ST官方的下載路徑:HYPERLINK /st/stonline/products/support/micro/files/um0412.zip上述文檔對(duì)于的用戶參考手冊(cè),請(qǐng)自行到STMCU網(wǎng)站下載。HYPERLINK http:/www.st.eom/mcu/familiesdocs-110.html%23Applicatihttp:/www.st.eom/

4、mcu/familiesdocs-110.html#Application%20Note下列步驟將介紹如何通過(guò)ST官方的USB升級(jí)代碼實(shí)現(xiàn)程序的下載更新的功能(IAP)。1、打開(kāi)STM3210B-EVALdemonstrationsoftware壓縮包,在STM3210B-EVALdemonstrationsoftwareDemosource下打開(kāi)main.c文件,找至UvoidInterruptConfig(void)函數(shù)/*SettheVectorTablebaseaddressat0 x08000000*/NVIC_SetVectorTable(NVIC_VectTab_FLASH,0

5、x00);這里我們需要修改代碼的中斷矢量起始地址,這樣做的目的是為了處理IAP代碼在Flash存放的區(qū)域與ApplicationCode部分的存放空間不會(huì)發(fā)生地址沖突。這里我們假設(shè)IAP存放在UserFlash的0 x080000000 x08003FFF區(qū)域,Applicationcode存放在UserFlash的0 x080040000 x0801FFFF區(qū)域。因?yàn)锳pplicationcode的開(kāi)始地址是由0 x08004000開(kāi)始,這樣我們需要為應(yīng)用代碼的中斷向量地址做一個(gè)重映射。因此我們修改該代碼為:/*SettheVectorTablebaseaddressat0 x0800400

6、0*/NVIC_SetVectorTable(NVIC_VectTab_FLASH,0 x4000);請(qǐng)注意這里NVIC_SetVectorTable函數(shù)的型參送入的是相對(duì)偏移地址,而不是絕對(duì)地址;2、在STM3210B-EVALdemonstrationsoftwareDemoprojectEWARM下找到lnkarm_flash.xcl文件,在XCL文件中找到下面的配置,該配置用于定制應(yīng)用代碼在Flash區(qū)域的存放空間和代碼運(yùn)行是RAM可以提供的空間。/CodememoryinFLASH-DR0MSTART=0 x8000000-DR0MEND=0 x803FFFF/DatainRAM-D

7、RAMSTART=0 x20000000-DRAMEND=0 x20004FFF由于我們的目標(biāo)應(yīng)用代碼將是在0 x08004000區(qū)域運(yùn)行,因此我們修改為:/CodememoryinFLASH-DR0MSTART=0 x8004000-DROMEND=0 x801FFFF/DatainRAM-DRAMSTART=0 x20000000-DRAMEND=0 x20004FFF在編譯的時(shí)候請(qǐng)確保ProjectOptionsLinkerConfig標(biāo)簽下的鏈接命令文件選擇的是上述Inkarm_flash.xcl文件;3、應(yīng)用部分改好,現(xiàn)在我們修改USB固件升級(jí)部分的代碼,打開(kāi)STM32F10XxxU

8、SBdeveloperkit開(kāi)發(fā)包。4、在開(kāi)發(fā)包下面找到STM32F10 xUSBLibUSBLibdemosDevice_Firmware_Upgrade例程,該例程是一個(gè)在STM32F10 xx系列MCU上實(shí)現(xiàn)運(yùn)行在UserFlash區(qū)域的IAP自升級(jí)代碼,通過(guò)STM32自身提供的USB接口實(shí)現(xiàn)。在STM32F10 xUSBLibUSBLibdemosDevice_Firmware_Upgradesource路徑下找到main.c文件,在56行:if(DFU_Button_Read()!=0 x00)/*Testifusercodeisprogrammedstartingfromaddre

9、ss0 x8003000*/if(*(vu32*)0 x8003000)&0 x2FFF0000)=0 x20000000)/*Jumptouserapplication*/JumpAddress=*(vu32*)(ApplicationAddress+4);Jump_To_Application=(pFunction)JumpAddress;/*InitializeuserapplicationsStackPointer*/_MSR_MSP(*(vu32*)ApplicationAddress);Jump_To_Application();/*OtherwiseentersDFUmodetoallowusertoprogramhisapplication*/這段代碼的功能是對(duì)應(yīng)用部分的代碼開(kāi)始地址做判斷,這里的地址與我們之前的步驟1、2都是對(duì)應(yīng)的。同樣這個(gè)代碼做如下更改:/*Testifusercodeisprogrammedstartingfromaddress0 x8004000*/if(*(vu32*)0 x8004000)&0 x2FFF0000)=0 x20000000)5、hw_config.h中定義:#defineApplicationAddress0 x080

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論