![Keil如何進(jìn)行stm32的程序開(kāi)發(fā)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/9/0184d19a-d28e-4d9c-86e6-c2c7849ac62b/0184d19a-d28e-4d9c-86e6-c2c7849ac62b1.gif)
![Keil如何進(jìn)行stm32的程序開(kāi)發(fā)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/9/0184d19a-d28e-4d9c-86e6-c2c7849ac62b/0184d19a-d28e-4d9c-86e6-c2c7849ac62b2.gif)
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、使用Keil進(jìn)行stm32的程序開(kāi)發(fā)本章的上一節(jié)向讀者介紹了Keil MDK 的安裝流程與在 Keil MDK 的gVision4 集成開(kāi)發(fā)環(huán)境下進(jìn)行stm32 工程的建立方法。本節(jié)我們就來(lái)看看如何使用 Keil MDK 開(kāi)發(fā)工具進(jìn)行 stm32 應(yīng)用程序的開(kāi)發(fā)。在此之前有必要向大家介紹幾個(gè)名詞,Keil、MDKgVision4、RealView、RVCT JLINK 還有 RVDS這些名詞分別表示什么,有什么從屬關(guān)系呢?相信很多讀者并沒(méi)有明確的概念,現(xiàn)在簡(jiǎn)單的說(shuō)明一下:Keil :這個(gè)大家應(yīng)該最為熟悉, Keil 其實(shí)是一家公司的名字,而這家 Keil 公司由兩家私人公司聯(lián)合 運(yùn)營(yíng),分別是德
2、國(guó)慕尼黑的 Keil Elektronik GmbH 和美國(guó)德克薩斯的 Keil Software 組成。大家很熟悉的 keil C51 就是從 KeilSoftware 手中誕生的。但是在 2005 年,Keil 公司被 ARM 公司收購(gòu)。值得一提的是, Keil 公司只有區(qū)區(qū) 20 多名員工,卻仍然做出了偉大的作品。MDK MDK 全稱(chēng) Microcontroller Develop Kit,意為微控制器開(kāi)發(fā)套件。ARM|攵購(gòu) Keil 公司的意圖在于進(jìn)軍微控制器(也就是我們常說(shuō)的單片機(jī))領(lǐng)域,MDK 就是這種意圖下的產(chǎn)物。但我們一般仍稱(chēng)之為 Keil MDK 而不是 ARM MDK Ke
3、il MDK 作為一個(gè)套件,包含了一系列軟件模塊。包括Keil 公司的 IDE 環(huán)境”卩 Vision ”,ARM 公司的編譯器 RVCT Flash 燒寫(xiě)軟件模塊等。gVision4 :gVision4 是 Keil 公司的 IDE 環(huán)境”卩 Vision ”的第四個(gè)版本,從根本上來(lái)說(shuō)gVision4是一個(gè)開(kāi)發(fā)環(huán)境,并不必須包含編譯器、仿真、燒寫(xiě)等模塊。比如AVR 單片機(jī)的一個(gè)開(kāi)發(fā)環(huán)境 WinAVR (又稱(chēng) GCCAV)就不包含仿真調(diào)試器,也不包含燒寫(xiě)模塊。值得一提的是,家喻戶(hù)曉的Keil C51 正是基于gVision2 開(kāi)發(fā)環(huán)境,所以gVision4 的界面和gVision2 非常的相似
4、,很有利于廣大習(xí)慣于gVision2 開(kāi)發(fā)環(huán)境的開(kāi)發(fā)人員轉(zhuǎn)向使用gVision4 進(jìn)行 stm32 的開(kāi)發(fā)。RealView :是 ARM 公司編譯工具的名稱(chēng)。其首字母就是下文提到的RVCT 中的R。RVCT 全稱(chēng)為 RealView Compilation Tools,意為 RealView 編譯工具。是 ARM 公司針對(duì)自身 ARM 系歹廿 CPU 開(kāi)發(fā)的編譯工具,其主要由:ARM/Thumb匚編器armasm連接器armlink格式轉(zhuǎn)換工具fromelf庫(kù)管理器armarC和C+應(yīng)用程序庫(kù)工程管理組成,這些模塊都被嵌入到了集成KeilgVision4開(kāi)發(fā)環(huán)境里(但絕不僅是KeilgVis
5、ion4)。值得一提的是,ARM公司作為ARM處理器的設(shè)計(jì)者,其編譯工具RVCT的性能與表現(xiàn)是無(wú)與倫比的,沒(méi)有任何一套編譯工具能取代其成為首選。RVDS全稱(chēng)為RealView Developer Suite,意為RealView開(kāi)發(fā)套件。是ARM公司為方便用戶(hù)在ARM芯片上進(jìn)行應(yīng)用軟件開(kāi)發(fā)而推出的一 整套集成開(kāi)發(fā)工具。該套工具包括軟件開(kāi)發(fā)套件和硬件仿真工具,是軟硬件結(jié)合的套件。RVDS的價(jià)格十分的高昂,但功能也十分的強(qiáng)大,基本不會(huì)在普通企業(yè)和個(gè)人用戶(hù)手中出現(xiàn)。J-Link:J-Link是SEGGE公司為支持仿真ARM內(nèi)核芯片推出的JTAG仿真器。配合IAR EWAR ADS KEIL,WINA
6、RM RealView等集成開(kāi)發(fā)環(huán)境支持所有ARM7/ARM9/Cortex內(nèi)核芯片的仿真,通過(guò)RDI接口和各集成開(kāi)發(fā)環(huán)境無(wú)縫連接,操作方便、連接方便、簡(jiǎn)單易學(xué),是學(xué) 習(xí)開(kāi)發(fā)ARM最好最實(shí)用的開(kāi)發(fā)工具。筆者使用的就是J-Link仿真器,并且推薦各位讀者使用J-Link仿真器進(jìn)行stm32工程的開(kāi)發(fā)。OK名詞解釋完畢,相信各位讀者看完之后,以后不會(huì)再秉持“我使用Keil編譯器”或者“我正在下載RVDS”這種看似內(nèi)行本質(zhì)外行的言論了A_A。本書(shū)選用KeilgVision4作為本書(shū)中工程實(shí)例的開(kāi)發(fā)環(huán)境,原因在于其軟件操作方式簡(jiǎn)單,功能齊全,有Keil C51開(kāi)發(fā)經(jīng)歷的讀者朋友可以很快上手。而且作為A
7、RM公司旗下根正苗紅的IDE,相信ARM公司是不會(huì)讓自家孩子在外邊獻(xiàn)丑的。一般情況下,我們會(huì)使用 IDE 做以下事情:1、 編寫(xiě)程序代碼。2、 編譯程序。3、 燒寫(xiě)程序。4、 調(diào)試程序,包括查看變量、內(nèi)存、寄存器,時(shí)間跟蹤分析、甚至可以調(diào)用虛擬打印窗和虛擬邏輯分析儀 用以顯示程序輸出。5、 輸出需要的文件如 Hex、Bin、Lib 等我們就遵循以上幾條思路,來(lái)看看我們的 KeilgVision4 如何實(shí)現(xiàn)這些功能。首先請(qǐng)讀者準(zhǔn)備好一塊至少擁有一個(gè)最小系統(tǒng)的 stm32 硬件環(huán)境, J-Link 仿真器,然后依照上一節(jié)的辦法建立一個(gè) stm32 的工程,建立完畢后請(qǐng)將如下代碼作為 main.c
8、文件的內(nèi)容:#include stm32f10 x_lib.h u32 Stm32IdHigh = 0;u32 Stm32IdMed = 0;u32 Stm32IdLow = 0;void RccInitialisation(void);int main(void)RccInitialisation();Stm32IdLow = *(u32*)0 x1FFFF7E8);Stm32IdMed = *(u32*)0 x1FFFF7EC);Stm32IdHigh = *(u32*)0 x1FFFF7F0);while(1);void RccInitialisation(void)ErrorStatu
9、s HSEStartUpStatus;RCC_DeInit();RCC_HSEConfig(RCC_HSE_ON);HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus = SUCCESS)RCC_HCLKConfig(RCC_SYSCLK_Div1);RCC_PCLK2Config(RCC_HCLK_Div1);RCC_PCLK1Config(RCC_HCLK_Div2);FLASH_SetLatency(FLASH_Latency_2);FLASH_PrefetchBufferCmd(FLASH_PrefetchBuf
10、fer_Enable);RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);RCC_PLLCmd(ENABLE);while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET);RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);while(RCC_GetSYSCLKSource() != 0 x08);鍵入如上代碼完成后按下ctrl + S進(jìn)行保存。然后我們來(lái)看看在開(kāi)始代碼編譯調(diào)試之前需要進(jìn)行哪些設(shè)置工作。1、右鍵點(diǎn)擊project區(qū)工程組中的頂部MyFirstJob“,在
11、彈出的右鍵菜單中選擇Option for TargetMyFirstJob .項(xiàng),彈出設(shè)置窗口,如下圖所示:在彈出的設(shè)置窗口Option for TargetMyFirstJob中,請(qǐng)讀者執(zhí)行如下操作:(1)切換到Debug標(biāo)簽,選擇Use:Cortex M/R J-LINK/J-Trace,勾選Load Application at Startup,Run to main()等,如下圖所示:.Hyl irsUkxb - liVteid(2) 切換到Utilities標(biāo)簽,選擇Use Target Driver For Flash Programming,并選擇Cortex M/RJ-LINK
12、/J-Trace,點(diǎn)擊Settings,在彈出的窗口中點(diǎn)擊Add按鈕,根據(jù)讀者自身的stm32型號(hào)做出如下選擇:如果使用的是Stm32f103x4或Stm32f103x6系列,則請(qǐng)選擇STM32F10X Low-density Flash;如果使用的是Stm32f103x8或stm32f103xb系列,則請(qǐng)選擇STM32F10X Med-density Flash;如果使用的是stm32f103xc、stm32f103xd或stm32f103xe系列,則請(qǐng)選擇STM32F10X High-density Flash;這里的High Med Low分別對(duì)應(yīng)了stm32中各種型號(hào)中的大、中、小容量
13、Flash型號(hào)。筆者使用的是Stm32f103rbt6,所以應(yīng)該選擇STM32F10XMed-de nsity Flash。如下圖所示:JOI A!E或rt dewFla-thPcriph-tra Toclc SVC5 V-Hndlw Help廣UeSrvMr| Is4;用MNKAPTnxp 5*gi |廠(chǎng)LrI.HHnfwrTdrct HyTiriitlobj Ikr.JLJUl IPrelect劉nmi機(jī)ion東 |Caflal MM選定后依次點(diǎn)擊Add- OK完成Option for TargetMyFirstJob的設(shè)置。2、按下F7進(jìn)行編譯,無(wú)錯(cuò)誤和警告提示。3、在連接好硬件之后(包
14、括J-link驅(qū)動(dòng)的安裝)按下Ctrl + F5進(jìn)入實(shí)時(shí)仿真狀態(tài),還需提及的是,Ctrl + F5操作不僅僅表示進(jìn)入了仿真調(diào)試狀態(tài),而且還把程序真正的燒寫(xiě)進(jìn)了STM32的FLASH空間里。4、可以看到進(jìn)入仿真狀態(tài)的KeilgVision4在界面上多了不少變化:*多出調(diào)試工具欄:其中上面分別有Reset(復(fù)位)、Run(全速運(yùn)行)、Step(單步進(jìn)入函數(shù)內(nèi)部)、Step Over(單步越過(guò)函數(shù))、Step Out(單步跳出函數(shù))等圖標(biāo);*多出一個(gè)匯編跟蹤窗口;Rash伽n(osdP *M WLOfiDFl-a*h Prn-r|ramivg IgritiiirTiearpcor:叱環(huán)Flh i.b
15、GorMUG1 4KB Rash DdaXVw址日n* LD毗2$強(qiáng)血J 4 2 RM S29ULQ3汕BaTAwn iSJLCBJi-RF=2ifoJHhHtrf疔口 T”-STTM32F1kCianf*tMLh .rrMFlO:K25PU SH RVTM倍他 Zgn;SmiAIStlo*弋對(duì)1Fin曠fiOn-taifij FlarrEM陽(yáng)廿12 obtt Fluh ISMEJC陽(yáng)才 1&otCbn-5wp Rfl-diOlMc殆滬命H HM M鳥(niǎo)站RKIRNRHRKIRNRHOK | AZ |4tL:iSimulatiBnCAH-TE31_*eLq I i t-勺22 22二-1
16、-122沢勺*多出一個(gè)命令提示窗口;如下圖所示:AS5IGNBTCItDlsahlv BxrakZrnbilc arrakKill BrcalrL 1st BxEatStrt BmkAccea CGVERA5E DEF IKE DIK當(dāng)然這些窗口可以根據(jù)需要隨時(shí)關(guān)閉或開(kāi)啟。5、很值得說(shuō)一下Reset(復(fù)位)、Run(全速運(yùn)行)、Step(單步進(jìn)入函數(shù)內(nèi)部)、Step Over(單步越過(guò)函數(shù))、Step Out(單步跳出函數(shù))這幾個(gè)按鈕的作用:Reset:復(fù)位按鈕,其作用是讓程序回到程序的起始處開(kāi)始執(zhí)行,注意這相當(dāng)于一次軟復(fù)位,而不是硬件復(fù)位;Run:全速運(yùn)行按鈕,其作用是使程序全速運(yùn)行;Ste
17、p:單步進(jìn)入函數(shù)內(nèi)部按鈕,如果當(dāng)前語(yǔ)句是一個(gè)函數(shù)調(diào)用(任何形式的調(diào)用),則按下此按鈕進(jìn)入該函數(shù),但只運(yùn)行一句C代碼;Step Over:單步越過(guò),無(wú)論當(dāng)前是任何功能的語(yǔ)句,按下此按鈕后都會(huì)執(zhí)行至下一條語(yǔ)句;Step Out:單步跳出函數(shù),如果當(dāng)前處于某函數(shù)內(nèi)部,則按下此按鈕則運(yùn)行至該函數(shù)退出后的第一條語(yǔ)句;此外經(jīng)常用到的還有兩個(gè)按鈕:“Start/Stop DebugSession”、“Insert/Remove Breakpoint”,分別是“開(kāi)啟/關(guān)閉調(diào)試模式和“插入/解除斷點(diǎn),分別對(duì)應(yīng)快捷鍵Ctrl + F5和F9。最后筆者建議讀者應(yīng)該盡快熟悉這些調(diào)試工具按鈕所對(duì)應(yīng)的快捷鍵,如全速運(yùn)行R
18、un按鈕對(duì)應(yīng)F5按鍵,單步運(yùn)行Step對(duì)應(yīng)F10按鍵等。熟悉使用這些快捷鍵一定能極大地提高調(diào)試程序的效率。團(tuán)I lyFtaLkJa - uVtn4.E,dit尸庫(kù)汨 七tup Pepphrl$ pal$ JV5即ncl些w Jjelpa込.哼i陰貳列沁國(guó)t話(huà)訂-:_i5; j-riiH曰Sootj arb!xmJ_Ti3cia.s的OwO0OOBM.M1!:0L22B51GPUSHFcGiniiidi 丄 s 心 it. ciii n ;兀館跟邙FfrrrFCB BL.!;Rcdnktlaliiflblc- (0350OOSfi;) 5Utcw *(53-) :KlFFFFhEip+ HB沖
19、* 削f. . .嶼、 樋貝 Mg也斗!t . F ntB jptH出rci.盤(pán)EAC.C丁舷O?iTF;,*JLirtJLXt JLlfilc*JLliik usJmrc sIr.C :IitEi iInfia:TOL-allRLn 號(hào)”iRFtint CxO:1I :xtex-X3 -L-, little口丄*血TPIU fittftJ.FFUhit; 6 de (BP alQH and 3 licrcdl*HSTJX2IdT&vJSMtb- t.i巧而氏FiL打n4F由如r片呵* 龍曲詬tbj pi:iprali Josh JVCS說(shuō)詁do葉駅W-m,I HN- i小斤-: .m
20、wii我們可以看到,從0X1FFFF7E8地址處開(kāi)始的數(shù)據(jù)分配情況如下:0X1FFFF7E8 52 FF 6B 060X1FFFF7EC 48 82 50 510X1FFFF7FQ 43 37 20 87在第8點(diǎn)的時(shí)候我們列出了Stm32ldHigh、Stm32ldMed、Stm32ldLow三個(gè)變量的值分別為Stm32ldLow = 0 x066Bff52、Stm32ldMed =0 x51508248、Stm32IdHigh = 0 x87203743。細(xì)心的讀者可以發(fā)現(xiàn)存儲(chǔ)區(qū)空間的數(shù)據(jù)和這三個(gè)變量有這“一樣卻有“不一樣的地方。一樣在于數(shù)據(jù)的大小是一致吻合的,不一樣在于數(shù)據(jù)的排列順序卻顛倒
21、了。這就是所謂的小端格式:低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。(注意Memory窗口中,地址是從左往右,從上往下遞增的)10、此外gVision4開(kāi)發(fā)環(huán)境中較為經(jīng)常用到的功能還有文件查找(Find in Files)、分析儀(Analysis Window)、寄存器組(RegisterWindow)等。這些功能模塊可以在菜單欄里面輕易地找到并啟用。墻Ik.L i tr rr o -/ r對(duì)可山屛衛(wèi)|v Mt.c c s s s s 55 4-4- 4 4 twtwJJKrKrJ2JJ2J.f .fC C- -BRDMtefr則2 i Wi32f l-&MTT,Cb 22 Wc;,Pfajfiii5AC腴1 CBn9101t12CBn9101t1220AtclniiljlisJtlon(jSE32144 叮(uJ”)伽IFF卜TE&HS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小區(qū)房屋買(mǎi)賣(mài)合同范本年
- 專(zhuān)業(yè)別墅裝修合同范本大全
- 產(chǎn)權(quán)清晰的地下車(chē)位買(mǎi)賣(mài)合同
- 中韓文化交流與合作合同
- 產(chǎn)品責(zé)任賠償保險(xiǎn)合同范本
- 個(gè)人債務(wù)轉(zhuǎn)讓及履行合同協(xié)議
- 事業(yè)單位勞動(dòng)合同標(biāo)準(zhǔn)文本
- 產(chǎn)學(xué)研技術(shù)合作開(kāi)發(fā)合同范例
- 個(gè)人合伙技術(shù)服務(wù)合同協(xié)議書(shū)范本
- 專(zhuān)利交易合同范例
- 重建成長(zhǎng)型思維課件
- 電捕焦油器火災(zāi)爆炸事故分析
- 質(zhì)量問(wèn)題分析及措施報(bào)告
- 汽修廠(chǎng)安全風(fēng)險(xiǎn)分級(jí)管控清單
- 現(xiàn)代通信原理與技術(shù)(第五版)PPT全套完整教學(xué)課件
- 病例展示(皮膚科)
- GB/T 39750-2021光伏發(fā)電系統(tǒng)直流電弧保護(hù)技術(shù)要求
- DB31T 685-2019 養(yǎng)老機(jī)構(gòu)設(shè)施與服務(wù)要求
- 燕子山風(fēng)電場(chǎng)項(xiàng)目安全預(yù)評(píng)價(jià)報(bào)告
- 高一英語(yǔ)課本必修1各單元重點(diǎn)短語(yǔ)
- 完整版金屬學(xué)與熱處理課件
評(píng)論
0/150
提交評(píng)論