Keil如何進(jìn)行stm32的程序開(kāi)發(fā)_第1頁(yè)
Keil如何進(jìn)行stm32的程序開(kāi)發(fā)_第2頁(yè)
Keil如何進(jìn)行stm32的程序開(kāi)發(fā)_第3頁(yè)
Keil如何進(jìn)行stm32的程序開(kāi)發(fā)_第4頁(yè)
Keil如何進(jìn)行stm32的程序開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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的Vision4集成開(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、MDK、Vision4、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),分別是德國(guó)慕尼黑的Keil Elektro

2、nik GmbH和美國(guó)德克薩斯的Keil Software組成。大家很熟悉的keil C51就是從Keil Software手中誕生的。但是在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,Keil MDK作為一個(gè)套件,包含了一系列軟件模塊。包括Keil公司的IDE 環(huán)境”Vi

3、sion”,ARM公司的編譯器RVCT,F(xiàn)lash燒寫(xiě)軟件模塊等。 Vision4:Vision4是Keil公司的IDE環(huán)境”Vision”的第四個(gè)版本,從根本上來(lái)說(shuō)Vision4是一個(gè)開(kāi)發(fā)環(huán)境,并不必須包含編譯器、仿真、燒寫(xiě)等模塊。比如AVR單片機(jī)的一個(gè)開(kāi)發(fā)環(huán)境WinAVR(又稱(chēng)GCCAVR)就不包含仿真調(diào)試器,也不包含燒寫(xiě)模塊。值得一提的是,家喻戶(hù)曉的Keil C51正是基于Vision2開(kāi)發(fā)環(huán)境,所以Vision4的界面和Vision2非常的相似,很有利于廣大習(xí)慣于Vision2開(kāi)發(fā)環(huán)境的開(kāi)發(fā)人員轉(zhuǎn)向使用Vision4進(jìn)行stm32的開(kāi)發(fā)。RealView:是ARM公司編譯工具的名稱(chēng)。其

4、首字母就是下文提到的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ù)工程管理組成,這些模塊都被嵌入到了集成Keil Vision4開(kāi)發(fā)環(huán)境里(但絕不僅是Keil Vision4)。值得一提的是,ARM公司作為ARM處理器的設(shè)計(jì)者,其編譯工具RVCT的性能與表現(xiàn)是無(wú)與倫比的,沒(méi)有任何一套編譯工具能取代其成為首選。RVDS:全稱(chēng)為RealView Dev

5、eloper 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是SEGGER公司為支持仿真ARM內(nèi)核芯片推出的JTAG仿真器。配合IAR EWAR,ADS,KEIL,WINARM,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最好

6、最實(shí)用的開(kāi)發(fā)工具。筆者使用的就是J-Link仿真器,并且推薦各位讀者使用J-Link仿真器進(jìn)行stm32工程的開(kāi)發(fā)。OK,名詞解釋完畢,相信各位讀者看完之后,以后不會(huì)再秉持“我使用Keil編譯器”或者“我正在下載RVDS”這種看似內(nèi)行本質(zhì)外行的言論了_。本書(shū)選用Keil Vision4作為本書(shū)中工程實(shí)例的開(kāi)發(fā)環(huán)境,原因在于其軟件操作方式簡(jiǎn)單,功能齊全,有Keil C51開(kāi)發(fā)經(jīng)歷的讀者朋友可以很快上手。而且作為ARM公司旗下根正苗紅的IDE,相信ARM公司是不會(huì)讓自家孩子在外邊獻(xiàn)丑的。一般情況下,我們會(huì)使用IDE做以下事情:1、編寫(xiě)程序代碼。2、編譯程序。3、燒寫(xiě)程序。4、調(diào)試程序,包括查看變量

7、、內(nèi)存、寄存器,時(shí)間跟蹤分析、甚至可以調(diào)用虛擬打印窗和虛擬邏輯分析儀用以顯示程序輸出。5、輸出需要的文件如Hex、Bin、Lib等我們就遵循以上幾條思路,來(lái)看看我們的Keil Vision4如何實(shí)現(xiàn)這些功能。首先請(qǐng)讀者準(zhǔn)備好一塊至少擁有一個(gè)最小系統(tǒng)的stm32硬件環(huán)境,J-Link仿真器,然后依照上一節(jié)的辦法建立一個(gè)stm32的工程,建立完畢后請(qǐng)將如下代碼作為main.c文件的內(nèi)容:#include "stm32f10x_lib.h"u32 Stm32IdHigh = 0;u32 Stm32IdMed = 0;u32 Stm32IdLow = 0;void RccIniti

8、alisation(void);int main(void)  RccInitialisation();Stm32IdLow = *(u32*)0x1FFFF7E8);Stm32IdMed  = *(u32*)0x1FFFF7EC);Stm32IdHigh = *(u32*)0x1FFFF7F0);  while(1);void RccInitialisation(void)ErrorStatus HSEStartUpStatus;  RCC_DeInit();  RCC_HSEConfig(RCC_HSE_ON)

9、;  HSEStartUpStatus = RCC_WaitForHSEStartUp();  if(HSEStartUpStatus = SUCCESS)      RCC_HCLKConfig(RCC_SYSCLK_Div1);     RCC_PCLK2Config(RCC_HCLK_Div1);     RCC_PCLK1Config(RCC_HCLK_Div2);    FLASH_Se

10、tLatency(FLASH_Latency_2);    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);    RCC_PLLCmd(ENABLE);    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET);    RCC_S

11、YSCLKConfig(RCC_SYSCLKSource_PLLCLK);    while(RCC_GetSYSCLKSource() != 0x08);  鍵入如上代碼完成后按下ctrl + S進(jìn)行保存。然后我們來(lái)看看在開(kāi)始代碼編譯調(diào)試之前需要進(jìn)行哪些設(shè)置工作。 1、右鍵點(diǎn)擊project區(qū)工程組中的頂部”MyFirstJob “,在彈出的右鍵菜單中選擇”O(jiān)ption for Target MyFirstJob”項(xiàng),彈出設(shè)置窗口,如下圖所示:1.jpg (94.23 KB)2011-1-14 00:43在彈出的設(shè)置窗口Option

12、 for Target MyFirstJob中,請(qǐng)讀者執(zhí)行如下操作: (1)切換到Debug標(biāo)簽,選擇Use:Cortex M/R J-LINK/J-Trace,勾選Load Application at Startup,Run to main()等,如下圖所示:2.jpg (96.74 KB)2011-1-14 00:43  (2) 切換到Utilities標(biāo)簽,選擇Use Target Driver For Flash Programming,并選擇Cortex M/R J-LINK/J-Trace,點(diǎn)擊Settings,在彈出的窗口中點(diǎn)擊

13、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)中的大、中、小容量Flash型號(hào)。筆者使用的是stm32f103rbt6,所

14、以應(yīng)該選擇STM32F10X Med-density Flash。如下圖所示:3.jpg (97.02 KB)2011-1-14 00:43選定后依次點(diǎn)擊AddOK,完成Option for Target MyFirstJob的設(shè)置。 2、按下F7進(jìn)行編譯,無(wú)錯(cuò)誤和警告提示。 3、在連接好硬件之后(包括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)的Keil Vision4在界面上多了不少變化:l&#

15、160;   *  多出調(diào)試工具欄:其中上面分別有Reset(復(fù)位)、Run(全速運(yùn)行)、Step(單步進(jìn)入函數(shù)內(nèi)部)、Step Over(單步越過(guò)函數(shù))、Step Out(單步跳出函數(shù))等圖標(biāo);l    *  多出一個(gè)匯編跟蹤窗口;l    *  多出一個(gè)命令提示窗口;如下圖所示:4.jpg (123.65 KB)2011-1-14 00:43 當(dāng)然這些窗口可以根據(jù)需要隨時(shí)關(guān)閉或開(kāi)啟。 5、很值得說(shuō)一下Reset(復(fù)位)、Run(全速運(yùn)行)、Step(單

16、步進(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)行;Step:?jiǎn)尾竭M(jìn)入函數(shù)內(nèi)部按鈕,如果當(dāng)前語(yǔ)句是一個(gè)函數(shù)調(diào)用(任何形式的調(diào)用),則按下此按鈕進(jìn)入該函數(shù),但只運(yùn)行一句C代碼;Step Over:?jiǎn)尾皆竭^(guò),無(wú)論當(dāng)前是任何功能的語(yǔ)句,按下此按鈕后都會(huì)執(zhí)行至下一條語(yǔ)句;Step Out:?jiǎn)尾教龊瘮?shù),如果當(dāng)前處于某函數(shù)內(nèi)部,則按下此按鈕則運(yùn)行至該函數(shù)退出后的第一條語(yǔ)句;此外經(jīng)常用到的還有兩個(gè)按鈕:“St

17、art/Stop Debug Session”、“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)行Run按鈕對(duì)應(yīng)F5按鍵,單步運(yùn)行Step對(duì)應(yīng)F10按鍵等。熟悉使用這些快捷鍵一定能極大地提高調(diào)試程序的效率。 6、首先請(qǐng)讀者是光標(biāo)停留在程序中“while(1);”一句所在行,按下F9設(shè)置斷點(diǎn),并隨即按下F5執(zhí)行全速運(yùn)行。很快可以看到程序停在了while(1);一行,如下圖所示。因?yàn)槌绦蚝芏绦?,?duì)于72MHz主頻的STM32來(lái)

18、說(shuō),花費(fèi)的時(shí)間只有幾個(gè)us。5.jpg (78.7 KB)2011-1-14 00:43  7、解釋一下該程序的作用,首先在程序頂部進(jìn)行三個(gè)外部變量Stm32IdHigh、Stm32IdMed、Stm32IdLow的定義。隨后調(diào)用RccInitialisation()函數(shù)對(duì)STM32的時(shí)鐘進(jìn)行配置。然后讀出STM32整個(gè)存儲(chǔ)空間中起始地址為0x1FFFF7E8、0x1FFFF7EC、0x1FFFF7F0的數(shù)據(jù),分別保存在三個(gè)外部變量中。事實(shí)上,這三個(gè)地址所存放的是STM32本身所自帶的全球唯一身份識(shí)別碼(ID)。每一片STM32都擁有與任何其他一片任何型號(hào)的STM32器件不

19、同的ID碼,這對(duì)數(shù)據(jù)加密有重要意義。 8、如何查看變量的值呢?有兩種辦法,一是將光標(biāo)置于該變量上,大約1秒鐘之后該變量的值會(huì)在光標(biāo)附近浮現(xiàn)。這種方法經(jīng)常使用在僅僅查看單個(gè)變量的值的情形中。第二種辦法是使用Vision4的Watch窗口,操作流程如下:依次點(diǎn)擊View Watch Windows Watch 1 / Watch 2,此時(shí)會(huì)根據(jù)選擇出現(xiàn)Watch 1或Watch 2窗口。隨后使用光標(biāo)拖選想要查看的變量并拖放到該Watch中即可查看到該變量的當(dāng)前值。將三個(gè)變量都添加進(jìn)Watch 1窗口之后,界面如下所示:6.jpg (94.75 KB)2011-1-14 00:43可以看到

20、這三個(gè)變量的值分別為Stm32IdHigh = 0x87203743、Stm32IdMed = 0x51508248、Stm32IdLow = 0x066Bff52。 9、我們都知道,變量一定是存放在STM32內(nèi)部的存儲(chǔ)空間中(無(wú)論是FLASH空間還是RAM空間),那理所當(dāng)然的這些存儲(chǔ)空間應(yīng)該也是可以查看的。操作流程如下:依次點(diǎn)擊View Memory Windows Memory 1 / Memory 2 / Memory 3 / Memory 4,此時(shí)根據(jù)選擇出現(xiàn)Memory窗口。在該Memory窗口中填入所要查看的存儲(chǔ)地址(此處填入0x1FFFF7E8,注意前面的0x不能省略),按下回車(chē)鍵后Memory窗

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論