stm32+IAR配置與固件使用_第1頁(yè)
stm32+IAR配置與固件使用_第2頁(yè)
stm32+IAR配置與固件使用_第3頁(yè)
stm32+IAR配置與固件使用_第4頁(yè)
stm32+IAR配置與固件使用_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

<2010-12-24<Kongst>kongst@163.com<EWARM_STM32_Use_Instructions>Ifanerror,pleasecontactauthor,tobecorrected.Forotheruses,indicatethesource,toexpressmyrecognitionoftheresults.Thankyou.一、序言:1.1說(shuō)明本文逐步介紹了作者自身在STM32處理器和IAR編譯環(huán)境的學(xué)習(xí)過(guò)程,并介紹了在該類(lèi)環(huán)境下容易產(chǎn)生錯(cuò)誤的地方,最后順利的進(jìn)行Firmware下的程序編寫(xiě)和ST-LINK的調(diào)試。說(shuō)來(lái)慚愧,小小的編譯環(huán)境竟然花費(fèi)了我整整4天時(shí)間,本人也是跟隨著網(wǎng)上的眾多教程慢慢的摸索??刹幌耄帉?xiě)教程的人貌似并沒(méi)有遇到很多問(wèn)題,而自己確因?yàn)槿似返年P(guān)系很是出錯(cuò)。現(xiàn)將熟悉過(guò)程記錄之,供人品和我一樣差的,甚至比我差的同胞使用。以下,僅僅是作者自身的實(shí)踐所得。如有出錯(cuò),請(qǐng)諒解,并提出意見(jiàn);如需要引用,還請(qǐng)注明來(lái)源,以此表示對(duì)我成果的肯定。謝謝。1.2選擇STM32單片機(jī)/處理器在公司完成一個(gè)項(xiàng)目之后,需要考慮新的芯片適應(yīng)新的需求,以此,同主管商量之后,決定采用ST的8位或32位單片機(jī)。其價(jià)格、功能、用戶群都是比較不錯(cuò)的。介于自身對(duì)32位芯片的向往,于是義不容辭的直接上STM32單片機(jī)。公司正好有一塊STM32的板子,于是決定從STM32F103C1.3熟悉STM32的編程手法不同于以往的8位或16位單片機(jī),STM32的編程大量使用Firmware,也就是固件,個(gè)人理解是:Firmware不需要或者很少修改之后,可以隨意的調(diào)用,即可以實(shí)現(xiàn)相關(guān)功能。Firmware的設(shè)計(jì)結(jié)構(gòu)預(yù)示著它具有很好的通用型,而且熟悉之后調(diào)用非常的簡(jiǎn)單。最大的困難在于當(dāng)初次接觸Firmware時(shí),可能有點(diǎn)暈,于是本人花費(fèi)了整整4天時(shí)間初步搞定了如何使用Firmware,以及使用開(kāi)發(fā)板進(jìn)行下載調(diào)試。1.4平臺(tái)選擇A、開(kāi)發(fā)板、仿真器:使用的是STM32F103CB、開(kāi)發(fā)環(huán)境:IAREmbeddedWorkbenchforARM,32KKickstartEdition;C、Firmware:STM32F10x_StdPeriph_Lib_V3.4.0首先安裝IAREmbeddedWorkbenchforARM,32KKickstartEdition;下載STM32F10x_StdPeriph_Lib_V3.4.0;(所有的資源都可以到IAR和ST官網(wǎng)上下載,資源的獲取也是很重要的,要是自己不培養(yǎng)找資源的功夫,就不是一個(gè)好的開(kāi)發(fā)人員,這里就不留網(wǎng)址了)二、準(zhǔn)備工作2.1了解IARforARM編譯環(huán)境和很多其他的編譯環(huán)境一樣,IARforARM也分為創(chuàng)建項(xiàng)目,添加文件,編譯,連接,調(diào)試等相關(guān)流程。對(duì)IARforARM操作的重點(diǎn)在于對(duì)IAR環(huán)境的配置,將在后面詳細(xì)介紹。(不像Keil編寫(xiě)51單片機(jī)一樣,只需要配置out有hex輸出既可)2.2了解Firmware-STM32F10x_StdPeriph_Lib_V3.4.0只有對(duì)Firmware有整體性的認(rèn)識(shí)之后,你才能使用它,不至于很模糊。以此初學(xué)者一定要對(duì)Firmware有一個(gè)整體性的認(rèn)識(shí)。2.3了解ST-LINK這里的ST-LINK是正宗的ST公司設(shè)計(jì)的,不是ST-LINKII,更不是III;IARforARM中已經(jīng)提供了對(duì)ST-LINK的支持,以此很容易就可以使用ST-LINK進(jìn)行配置。三、開(kāi)始工作和很多教程一樣,使用項(xiàng)目知道的方法,在實(shí)際的操作中來(lái)加深對(duì)該環(huán)境下的操作方法。環(huán)境為:STM32F103CIAREmbeddedWorkbenchforARM,32KKickstartEditionSTM32F10x_StdPeriph_Lib_V3.4.03.1創(chuàng)建文件目錄創(chuàng)建一個(gè)文件夾20101223,在下面在創(chuàng)建一個(gè)EWARM文件夾:20101223文件夾是你的整個(gè)項(xiàng)目的文件夾;EWARM文件夾是項(xiàng)目中的放置工程文件夾;3.2創(chuàng)建一個(gè)工程目錄創(chuàng)建一個(gè)Workspace,一個(gè)Project,添加AddGroup:最后IARforARM中的結(jié)構(gòu)如下:其中CMSIS:CortexMicrocontrollerSoftwareinterfacestandardStdPeriph_Driver:StandardPeripheralDriver這是你的代碼結(jié)構(gòu),主要是模仿Firmware中的Template,應(yīng)該是最清晰的結(jié)構(gòu)了。文件組織結(jié)構(gòu)如下:只要按照以上的建立方式,既可以進(jìn)入下一階段。3.3添加Firmware相關(guān)文件該過(guò)程主要是Copy和Add兩個(gè)過(guò)程。3.3.1CopyA、CopyFirmware下的整個(gè)Libraries文件夾到20101223文件夾下B、CopyFirmware中的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h、system_stm32f10x.c如圖:到20101223文件夾下,如圖:C、Copy各類(lèi).ICF文件stm32f10x_flash.icfstm32f10x_flash_extsram.icfstm32f10x_nor.icfstm32f10x_ram.icf如圖:到EWARM(即放置工程文件的文件夾下),如圖:至此,所有的拷貝工作都已經(jīng)完成,進(jìn)入Add調(diào)整階段。3.3.2A以最簡(jiǎn)單的GPIO端口操作為目的,開(kāi)始Add相關(guān)文件。添加之后的結(jié)果為:其中:core_cm3.c是內(nèi)核文件(沒(méi)深入研究);system_stm32f10x.c是系統(tǒng)相關(guān)文件(沒(méi)深入研究);misc.c是一個(gè)輔助文件;stm32f10x_gpio.c是gpio的驅(qū)動(dòng)文件;stm32f10x_rcc.c是復(fù)位與時(shí)鐘控制器驅(qū)動(dòng)文件;main.c是主程序的入口函數(shù),是整個(gè)系統(tǒng)的一個(gè)主框架;stm32f10x_it.c是系統(tǒng)的所有的中斷函數(shù)文件;至此,所有的Copy和Add操作都已經(jīng)完成,接下來(lái)是Modify。3.4開(kāi)始編譯和調(diào)試3.4.1CompilewithModify首先修改main.c修改main.c使之成為一個(gè)按照你的想法完成任務(wù)的系統(tǒng)功能。最簡(jiǎn)單的任務(wù)就是:讓一個(gè)LED一亮一滅;流程圖如下:源代碼如下:/*Includes--------------------------------------------*/#include"stm32f10x.h"/*Privatefunctionprototypes--------------------------------------------*/voidRCC_Configuration(void);voidGPIO_Configuration(void);typedefenum{LED1=0,LED2,LED3,LED4,}LED_STATE;LED_STATEled_status;intmain(void){u32cnt=0x000fffff;/*SystemClocksConfiguration*/RCC_Configuration();/*ConfiguretheGPIOports*/GPIO_Configuration();led_status=LED1;while(1){switch(led_status){caseLED1:GPIOB->BSRR=0x1000E000;/*turnonLD1*/led_status=LED2;break;caseLED2:GPIOB->BSRR=0x2000D000;/*turnonLD2*/led_status=LED3;break;caseLED3:GPIOB->BSRR=0x4000B000;/*turnonLD3*/led_status=LED4;break;caseLED4:GPIOB->BSRR=0x80007000;/*turnonLD4*/led_status=LED1;break;}while(cnt--);cnt=0x000fffff;}}/***@briefConfiguresthedifferentsystemclocks.*@paramNone*@retval:None*/voidRCC_Configuration(void){/*Setupthemicrocontrollersystem.InitializetheEmbeddedFlashInterface,initializethePLLandupdatetheSystemFrequencyvariable.*/SystemInit();/*GPIOAclockenable*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);}/***@briefConfiguretheGPIODPins.*@paramNone*@retval:None*/voidGPIO_Configuration(void){GPIO_InitTypeDefGPIO_InitStructure;/*GPIOBconfiguration:PB12PB13PB14PB15asledcontroller*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);}Compile發(fā)現(xiàn)問(wèn)題如下:通過(guò)調(diào)整頭文件路徑解決:右擊Project——>option——>C/C++Compile——>Preprocessor——>:在Additionalincludedirectories中加入如下語(yǔ)句:$PROJ_DIR$\..\$PROJ_DIR$\..\Libraries\CMSIS\CM3\CoreSupport$PROJ_DIR$\..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x$PROJ_DIR$\..\Libraries\STM32F10x_StdPeriph_Driver\inc如圖:Compile:您有可能會(huì)出現(xiàn)以下問(wèn)題:這是需要修改stm32f10x.h文件中的相關(guān),因?yàn)槟銢](méi)有為你的芯片選擇類(lèi)型,點(diǎn)擊錯(cuò)誤,即打開(kāi)了stm32f10x.h頭文件,如圖:只需要選擇您的期間類(lèi)型就好,比如:再Compile,這下錯(cuò)誤出現(xiàn)的嚇人,鎮(zhèn)定發(fā)現(xiàn),我們沒(méi)有選擇devicetype:右擊Project——>option——>GeneralOptions——>Target——>:選擇好正確的芯片類(lèi)型,如圖:Compile,出現(xiàn):分析好像沒(méi)有將一些頭文件包括進(jìn)來(lái),依然修改stm32f10x.h(注意:所有設(shè)備相關(guān)的頭文件都是由stm32f10x.h控制的),找到如下圖:將其改成:Compile:貌似ok了。至此,程序基本上沒(méi)有問(wèn)題,之后進(jìn)行調(diào)試,測(cè)試功能相關(guān)。3.4.2DebugandModify選擇調(diào)試工具:ST-LINK;選擇調(diào)試方式:arm或者flash;選擇燒寫(xiě)配置文件:stm32f10x_flash.icf;我們暫時(shí)使用ST-LINK進(jìn)行flash的調(diào)試,這樣,調(diào)試結(jié)束后,程序已經(jīng)燒寫(xiě)到芯片內(nèi)部,可以成為一個(gè)真正的系統(tǒng)了。至此所有的調(diào)試準(zhǔn)備工作都已經(jīng)就緒;連接設(shè)備:包括ST

溫馨提示

  • 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)論