STM32IAP,APP參數(shù)配置,向量表映射_第1頁
STM32IAP,APP參數(shù)配置,向量表映射_第2頁
STM32IAP,APP參數(shù)配置,向量表映射_第3頁
STM32IAP,APP參數(shù)配置,向量表映射_第4頁
STM32IAP,APP參數(shù)配置,向量表映射_第5頁
免費預(yù)覽已結(jié)束,剩余10頁可下載查看

下載本文檔

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

文檔簡介

1、基于 MDK 的 STM32 系列 IAP 和 APP 程序的配置很多人在做 IAP 程序的時候,一般都能很容易就做出來,但是在做 APP 的時候,卻經(jīng)常會跑飛,其中原理,大都由于 MDK 配置出的問題,或者是 APP 沒有映射向量表。向量表起始地址默認(rèn)的是 0 x08000000,在 IAP 的程序里不用再映射,但 APP 的起始地址已經(jīng)不再是0 x08000000,所以,必須要映射到實際的起始地址,否則當(dāng) IAP 跳轉(zhuǎn)到 APP 的時候,程序直接就飛了。如我的 APP 起始地址是 0 x08005400,我的映射函數(shù)是這么配置的NVIC_SetVectorTable(NVIC_VectTa

2、b_FLASH,0 x5400);NVIC_VectTab_FLASH 的值就是0 x08000000。下面讓我們來看看 IAP 和 APP 的 MDK 配置,其中片子為 STM32F103RE,IAP 起始是0 x08000000,程序大小是 0 x5400 字節(jié);APP 的起始地址是 0 x08005400,程序大小是 0 x7AC00,配置如下:1.IAP 的 optionfortargetstm3210e-evel配置1)這里要注意的是 IROM1 的配置2)這里是片子的選擇配置DeviceTargetOutput|ListingUser|C/C+AsmLinkerDebugVtlli

3、tiesConfigurftFlashMenuCommand*IlseTairgetDriverforFlashProgramming|CorlftMjM/RJ-UNKyj;Irace三5eUirigsFUpdateTargetbefaeDebuggingInitFite;|二EdJ|-UseExternalToolforFlashProgram福ngCommand;Arguments:IRunIndependentOKCancelDefaultsHelp單擊 setting 進(jìn)入下面的界面這里要注意 ProgrammingAlgorithm 的 size 大小。實際上經(jīng)過測試,這個 size

4、 使用片子的最大的容量也沒關(guān)系,即 0 x00080000(512K),也不會影響程序的運行。3)以上是大家需要配置的,以下是其它的配置,與 IAP 功能無關(guān)緊要,是我的配置,僅供大豕爹苦。OptionsforTarget一一STM32LOE-EVAL*I5|Dtvi|TargetOutput|ListingUserIC/C+AsmLinker|Debug|UtilitiesSelectFolderforQbiect$,r.ofExecutablsSTM321OE-VAL一CreateEwecutabla.STM321OE-EVALSTM321OE-EVAL審SebugIrifonnation

5、qCreateHEXFileF出的Inform前ionCreateLib同y:.STM3OEVALVSTM321OE-EVALLI0HelpDeviceTarget|OutputListingUser|C/C+|AsmLinkerDebugUtilities|SelectFolderforListings.PageWidth:卜9PaggLength:|66VAssemblerListing:.STM321OE-EVAL-.1stMCrossReferenceCCompierListing:ASTM321OE-EVALK.txtrCPreprocessorListing:.STM3210E-E

6、VALV.iPLinkerUsting:.STM321OE-EVALSTM321OE-EVAL.map廠MemoryMapCallgraph7Symbols7CrossReferenceVSizeInfo“TotakInfoMUnusedSedionsInfogVeneersInfoOKCancelDefaults,ZHelpDeviceTarget|Output|Listing|UserAsmLinkerDebugjUtilitiesPreprocessorSymbolsDefine:|USE_STDPERIPH_DRIVER,STM32F10K_HD,USE_STM3210E_EVALUn

7、define:|Language/CodeGeneration.Vine;.V.LbrafiesCMSISCM3Co(eSupport;.k.LbrariesCMSISXCM3DeviceSupportSTS口-c-cpuCo(tex-M3-D_MICROLIB-g-03-apcs=interwork-5plitsections-I.AincIA.A.Librarie$CMSISCM3CofeSupport-IAA.ALibrane$CMSISCM3bkDefaultsC/C+Optimization:Level3卜03)1OptimizeforTimeSplitLoadandStoreMul

8、tipleOneLFSectionperFunctionrrrrrStrictANSICEnumContaineralwaysiniPlainCharisSignedRead-0nlijPositionIndependentRedd-WiilePuitiuriIridcpvruJcrilWarnings:|AllWarningsThumbModeIncludePathsMi$cControlsCompilercontrolstringOptionsforTargetrSTI3210E-EVAL,DeviceTarget|Output|Listing|User|C/C+QUseMemo(yLay

9、outhornT廓getDialogM也eRWSectionsPositionIndependent一M親eROSectionsPositionIndependentDontSearchStandardLibrariesQReportmightfailConditionsa$ErrorsScatterFile-cpuCortex-M3x.o-Sbrary_type=microfo-strict-scatterM.STM3210E-EVALKSTM321OE-EVALset人-Summary_stderr-infosummarysizes-map-xref-callgraph-symbolsMi

10、secontrolsbkCancelDefaultsHelpE&LinkercontrolstringCortexJLink/JTraceTargetDriverSetupDebu&TraceIFlashDownloadJ-Link/J-TraceAdapterSWDeviceSN:99999994USB#:|0二|IDCODEDeviceNameMoveDevice:|J-LinkARMHW:V8.00di:|V4.35bFW:fnjnkARKTWcocnpfedNovPort:MaxClock:AutoClk|DebugConnect&ResetOptionsRes

11、etINormal7ResetafterConnectInterface6USBCTCP/IPScanState:readySWD6AutomaticDetectionIDCODE:ManualConfigurationDeviceName:Add|Delete|Update|IRlenfCacheOptions7CacheodeCacheMemoryTCP/IPOKCancelDownDownloadOptionsVerifyCodeDownloadDownloadtoflashHelp2.APP 的配置1)注意下面的 IROM1 的配置,千萬不可與 IAP 有區(qū)域重疊,而且 size 不能

12、超過片子的大小。這里 0X7AC00 與 IAP 的 0 x5400 之和,剛好是 0 x80000,即 512KOptionsforTargetrSTM32LDE-EFAL1DtviTargetOutputIListingUserIC/C+AsmLinkerIDebugIUtilities2)片子的配置STMicroelectroniciSTM32F103RE儂州;SJ-Operatingastern:jNcreSyslen-ViewerFile(.Sir):I_JRead/OnlyMsruwrydehuHoff-chipStartSizStartuprRDM1:|LrRQM2:|rrRDM

13、3:IrQn-diipRQM1|OhS005400|0 x7AC00(FrIRQM2:|rCodeGenerationUseCross-ModuleOptirnzaboriI?UseMicroLIBReddAiVriteMemoyAfea$defaultofhchipStartSizeNolrirRAW1;rrRAM2:rrRAM士|Ir0*chip*IRAM1:|0 x200000000 x10000rrIRANI|r再次說明一下,以上的 RAMforalgorithm(RAM 為運算法則準(zhǔn)備的空間)的 size 和programmingforalgorithm(程序為運算準(zhǔn)備的空間)的 s

14、ize 都是默認(rèn)的,當(dāng)然程序為運算準(zhǔn)備的空間大小也可以改成 0X7AC00,起始地址改為 0 x08005400,但經(jīng)過調(diào)試效果都一樣。其它 MDK 的設(shè)置參照 IAP 的(3)點(3)以下的說明要特別注意,稍不留神就會出問題。平時我們在建立工程的時候,可能不會去重新映射向量表,原因是一般我們程序的起始地址都是默認(rèn)的 0 x08000000,但此刻的 APP的起始地址是 0 x08005400,那么就必須重新映射了。需要注意的是,在系統(tǒng)時鐘配置好后,馬上就做向量映射,中間最好先不要做其它的配置,比如端口初始化等等,否則程序跑飛也不一定的。下面的這段代碼就是我實際的配置過程。VoidMain(v

15、oid)SystemInit();系統(tǒng)初始化NVIC_SetVectorTable(NVIC_VectTab_FLASH,0 x5400);向量表映射voidSystemInit(void)/*!CR|=(uint32_t)0 x00000100;/*!CFGR&=(uint32_t)0 x88FFC00C;/*!CR&=(uint32_t)0 xEEFEFFFE;/*!CR&=(uint32_t)0 xFFFBFFFF;/*!CFGR&=(uint32_t)0 xFF02FFFF;/*!CIR=0 x00000000;/*ConfiguretheSystemc

16、lockfrequency,AHB/APBxprescalersandFlashsettings*/SetSysClock();/SetSysClock65K();#ifdefVECT_TAB_SRAMSCB-VTOR=SRAM_BASE|VECT_TAB_OFFSET;/*VectorTableRelocationinInternalSRAM.*/#elseSCB-VTOR=FLASH_BASE|VECT_TAB_OFFSET;/*VectorTableRelocationinInternalFLASH.*/#endif)staticvoidSetSysClock(void)(_IOuint

17、32_tStartUpCounter=0,HSEStatus=0;/*SYSCLK,HCLK,PCLK2andPCLK1configuration*/*EnableHSE*/RCC-CR|=(uint32_t)RCC_CR_HSEON);/*WaittillHSEisreadyandifTimeoutisreachedexit*/do(HSEStatus=RCC-CR&RCC_CR_HSERDY;StartUpCounter+;while(HSEStatus=0)&(StartUpCounter!=HSE_STARTUP_TIMEOUT);if(RCC-CR&RCC_C

18、R_HSERDY)!=RESET)(HSEStatus=(uint32_t)0 x01;else(HSEStatus=(uint32_t)0 x00;if(HSEStatus=(uint32_t)0 x01)(/*Enable64-bitaccess*/FLASH-ACR|=FLASH_ACR_ACC64;/*EnablePrefetchBuffer*/FLASH-ACR|=FLASH_ACR_PRFTEN;/*Flash1waitstate*/FLASH-ACR|=FLASH_ACR_LATENCY;/*Powerenable*/RCC-APB1ENR|=RCC_APB1ENR_PWREN;/*SelecttheVoltageRange1(1.8V)*/PWR-CR=PWR_CR_VOS_0;/*WaitUntiltheVoltageRegulatorisready*/while(PWR-CSR&PWR_CSR_VOSF)!=RESET)(/*HCLK=SYSCLK/1*/RCC-CFGR|=(uint32_t)RCC_CFGR_HPRE_DIV1;/*PCLK2=HCLK/1*/RCC-CFGR|=(uint32_t)RCC_CFGR_PPRE2_DIV1;/*PCLK1=HCLK/1*/RCC-CFGR|=(uint32_t)RCC_CFGR_PPRE1_DIV

溫馨提示

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

評論

0/150

提交評論