




已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
熟悉Keil C 51的朋友對于Keil MDK上手應(yīng)該比較容易,畢竟界面是很像的。但ARM內(nèi)核畢竟不同于51內(nèi)核,因此無論在設(shè)置上還是在編程思想上,都需要下番功夫研究的。本文以MDK V4.03為例,詳細的寫一下MDK的設(shè)置、界面、工具??赡軙行╇s亂,但我想所涉及的東西都是最常用的;可能不是那么的嚴(yán)謹(jǐn)清晰,我想誰也沒把我期望成專家!哈,有問題歡迎留言。正式開始。 首先啟動MDK.當(dāng)然要先安裝好MDK,如果找不到在哪里下載,可以翻翻我以前的博文。啟動后的MDK界面如圖1所示。圖1 MDK界面第二.新建一個工程。單擊Project -New Vision Project.菜單項,Vision 4將打開一個標(biāo)準(zhǔn)對話框,見圖2,輸入希望新建工程的名字即可創(chuàng)建一個新的工程,建議對每個新建工程使用獨立的文件夾。例如,這里先建立一個新的文件夾,然后選擇這個文件夾作為新建工程的目錄,輸入新建工程的名字Project1,Vision將會創(chuàng)建一個以Project1.uvproj2為名字的新工程文件,它包含了一個缺省的目標(biāo)(target)和文件組名。這些內(nèi)容在Project Workspace-Files中可以看到。圖2第三.選擇設(shè)備在創(chuàng)建一個新的工程時,Vision要求為這個工程選擇一款CPU。選擇設(shè)備對話框顯示了Vision的設(shè)備數(shù)據(jù)庫,只需要選擇用戶所需的微控制器即可。例如,選擇 Philips LPC2114微控制器,這個選擇設(shè)置了LPC2114設(shè)備的必要工具選項、簡化了工具的配置。圖3注意: 當(dāng)創(chuàng)建一個新的工程時,Vision會自動為所選擇的CPU添加合適的啟動代碼。 對于一些設(shè)備而言,Vision需要用戶手動地輸入額外的參數(shù)。請仔細閱讀這個對話框右邊的信息,因為它可能包含所選設(shè)備的額外配置要求。 無語了,一個鐘頭寫的東西上傳之后竟然丟失了一大段。吐血中,繼續(xù)寫。到這里一個工程就新建完成,下面就需要編寫代碼,然后設(shè)置目標(biāo)配置,編譯調(diào)試等等。在這之前,我們先來了解一下MDK編譯器的常用工具按鈕,工欲善其事,必先利其器!1.編譯快捷按鈕:(1)編譯當(dāng)前文件(2)編譯已經(jīng)修改的文件(僅編譯已修改的文件,這樣可以節(jié)省編譯時間)(3)編譯所有文件(一般使用這個即可,當(dāng)設(shè)置過目標(biāo)配置選項后,必須使用它來重新編譯。)(4)停止編譯當(dāng)前文件2.程序下載快捷按鈕:具體使用參見我的博文:/zhzht19861011/archive/2010/10/06/5924218.aspx3.查找快捷按鈕:(1)在文件中查找。這是我最常用的查找方式,特別是有多個模塊時,當(dāng)你要找到一個函數(shù)或變量是在那個文件中定義的,就可以單擊這個圖標(biāo)來在全工程文件中查找。(2)在當(dāng)前文件中查找。在編輯框中輸入要查找的關(guān)鍵字,按回車即可查到,連續(xù)按回車會跳到下一處。(3)在當(dāng)前文件中查找。單擊后會彈出查找對話框,能進行一些設(shè)置,比如大小寫區(qū)分等。4.設(shè)置書簽快捷按鈕: (從左向右依次為標(biāo)簽1、2、3、4)這個功能還是很實用的,想象一下,當(dāng)你的一個文件有很多代碼的時候,尋找你需要的代碼行就變得很不容易,這個時候,設(shè)置書簽快捷鍵就派上了用場?。?)設(shè)置書簽。將鼠標(biāo)定位到要標(biāo)記的代碼行,單擊該圖標(biāo)則在代碼行的左側(cè)設(shè)下一個書簽,再次單擊該按鈕,取消該代碼行的書簽。(2)跳到上一書簽。(3)跳到下一書簽。(4)取消所有書簽5.調(diào)試快捷按鈕:(1)點擊此按鈕進入調(diào)試界面(2)設(shè)置斷電。單擊要設(shè)計斷電的代碼行,再單擊此按鈕,則為該代碼行設(shè)置了斷點,再次單擊,取消所設(shè)的斷點。通常設(shè)置斷點是在debug窗口的要設(shè)斷點代碼處雙擊,再次雙擊取消設(shè)置斷點。(3)使能/禁止斷點。將鼠標(biāo)定位到一個已經(jīng)設(shè)置了斷點的代碼行處,單擊此按鈕,該斷點被禁止,再次單擊該按鈕,斷點使能。(4)使能/禁止所有斷點。(5)取消所有斷點。哎呀,有事要回去了,明天接著寫。一晚上過去,繼續(xù)寫。6.工程視圖和配置快捷按鈕:(1)工程視圖快捷按鈕。這相當(dāng)于一個下拉菜單,里面有絕大多說的工程窗口。這個按鈕用來顯示/禁止工程內(nèi)的窗口。比如常常會有人把工程空間窗口或者編譯輸出窗口不小心關(guān)掉卻又不能把它再顯示出來,這個時候就可以通過單擊這個快捷按鈕的相應(yīng)內(nèi)容來顯示。另外,該按鈕實現(xiàn)的功能都可以在菜單view 中設(shè)置。(2)配置快捷按鈕。點擊一下出現(xiàn)圖4所示的界面:圖4(1)編輯選項卡。用來設(shè)置一些編輯信息,比如縮進的設(shè)置,顯示行號設(shè)置,界面顯示效果等等。(2)設(shè)置代碼、關(guān)鍵的顏色和字體。如果默認(rèn)的關(guān)鍵字顏色,代碼顏色,代碼字體、大小不符合你的習(xí)慣,可以在這里進行更該,在這里還可以更改用戶自定義關(guān)鍵字。(3)設(shè)置用戶關(guān)鍵字。非常非常好用的一個功能,它可以使你自己定義的關(guān)鍵字像系統(tǒng)關(guān)鍵字一樣高亮顯示。假如你有想寫一個移植性比較高的程序,通常一些和編譯器無關(guān)的變量類型需要這樣定義:typedef unsigned char uint8; /* 無符號8位整型變量 */ typedef signed char int8; /* 有符號8位整型變量 */ typedef unsigned short uint16; /* 無符號16位整型變量 */然后在其它模塊中都是這樣定義一個無符號8位整形變量:uint8 test; /定義變量這樣有一個什么問題呢?就是uint8這個雖然是用戶定義的關(guān)鍵字,但是它并不能像系統(tǒng)關(guān)鍵字那樣高亮顯示。怎么辦呢?完全有辦法解決,而且就是在這個標(biāo)簽卡中就可完成。方法如下:.打開User Keywords標(biāo)簽卡。在左側(cè)窗口選擇文件類型,比如ARM:Editor C File;在右側(cè)窗口點擊 按鈕,新建一個用戶關(guān)鍵字編輯框,輸入用戶定義的關(guān)鍵字,比如uint8,這樣在程序代碼中,所有的uint8都會高亮顯示。(4)設(shè)置快捷鍵。這個我沒有用過,所以不多說明。(5)模板代碼。這又是一個比較實用的功能,模板既有軟件自帶的,也可以自己編輯模板??梢栽谀銜鴮懗绦虻臅r候使用這一功能加快代碼的輸入。使用方法:a.先在該選項卡中編輯自己的代碼模板,也可以之用軟件自帶的模板。b.使用上面6(1)所說的工程視圖快捷按鈕,保證該按鈕下拉菜單中Templates被選中;選中后會在工程工作空間(Project WorkSpace)中出現(xiàn): 標(biāo)簽。c.在編寫代碼時,應(yīng)用即可。7.目標(biāo)工具選項(Target Options ):這個是最常用而且最重要的快捷按鈕和設(shè)置點。這里以LPC2114為例詳細做講述,其它CPU與之類似。Vision可以設(shè)置目標(biāo)硬件的選項。通過上面的工具欄按鈕或Project - Options for Target菜單項打開Options for Target對話框,如圖5所示。在Target頁中設(shè)置目標(biāo)硬件及所選CPU片上組件的參數(shù)。(1)設(shè)備選項卡(device )。圖5在這里可以在圖中2區(qū)域更改所使用的CPU,圖中3區(qū)域是該cpu 的一些描述。(2)硬件目標(biāo)設(shè)置選項卡(Target),見圖6所示。圖61:選擇硬件目標(biāo)設(shè)置選項卡2:指定用于的晶振頻率3:在應(yīng)用中可以選擇實時操作系統(tǒng)(RTOS)。Keil 提供: RTX Kernel: 它是一個非常有效的 RTOS,支持搶占式的任務(wù)調(diào)度、 消息和信號傳送、信號量等等。 完整的版本帶有源代碼和包含一個Flash文件系統(tǒng)和TCP/IP協(xié)議棧。4:指定選擇 ARM 或者 Thumb 模式進行代碼生成。5:利用 Cross-Module優(yōu)化為全局代碼優(yōu)化創(chuàng)建一個鏈接反饋文件。6:使用MicroLib庫。為進一步改進基于ARM處理器的應(yīng)用代碼密度,RealView MDK采用了新型microlib C庫(用于C的ISO標(biāo)準(zhǔn)運行時庫的一個子集),并將其代碼鏡像降低最小以滿足微控制器應(yīng)用的需求。Microlib C庫可將運行時庫代碼大大降低。7:選擇大端模式。編譯器默認(rèn)都是小端模式,NXP的LPC2114處理器只支持小端模式,所以該項變成了灰色。三星的S3C2440既支持大端也支持小端,這樣的處理器該項就可以選擇了。8:利用交叉模塊優(yōu)化創(chuàng)建一個鏈接反饋文件以實現(xiàn)全局代碼優(yōu)化。11:片外ROM設(shè)置,最多支持3塊ROM(Flash),在Start一欄輸入起始地址,在Size一欄輸入大小。若是有多片片外ROM,需要在13區(qū)域設(shè)置一個作為啟動存儲塊,程序從該塊啟動;有幾塊ROM需要選中對應(yīng)的9區(qū)域。12:片內(nèi)ROM設(shè)置。設(shè)置方法同片外ROM,只是程序的存儲區(qū)在芯片內(nèi)集成。17:片外RAM設(shè)置。基本同片外ROM,只是若選中19、20區(qū)域后,對應(yīng)的RAM不會被默認(rèn)初始化為0。18:片內(nèi)RAM設(shè)置。設(shè)置方法與片外RAM相同,只是數(shù)據(jù)的存儲區(qū)域在芯片內(nèi)集成。(3)輸出選項卡(Output),見圖7所示。圖71:選擇輸出選項卡2:指定輸出文件的文件夾,這樣做可以減少工程文件夾文件的數(shù)目。3.可執(zhí)行文件的名字??蓤?zhí)行文件指生成的.hex文件,因此應(yīng)先使能4區(qū)域。4:使能后會產(chǎn)生可執(zhí)行文件。5.創(chuàng)建批文件6.生成庫文件(4)列表選項卡(Listing),見圖8。圖81:選擇列表選項卡2: 指定輸出文件的文件夾,這樣做可以減少工程文件夾文件的數(shù)目。3:設(shè)置生成/禁止一些.lst、.txt文件。4.設(shè)置生成/禁止一些.map文件(生成的代碼詳細信息就在這個文件里)(5)用戶程序選項卡(User),見圖9。圖9 1:選擇用戶選項卡。2:編輯源文件前運行用戶程序。3:編譯前運行用戶程序。4:編譯后運行用戶程序。圖中所示的是運行fromelf.exe程序生成.bin文件,詳細方法見博客:/yx_l128125/article/details/9145695(6)C/C+選項卡,見圖10。圖101:選擇C/C+選項卡。2:定義預(yù)處理符號。假如有一段代碼使用了條件編譯,如下所示:#if ABC void delay_tus(uint32 dly) uint8 i; for (; dly0; dly-) for (i=0; i4; i+); #endif如果你想讓編譯器編譯這段代碼,有兩種方法:第一種方法:使用#define ABC第二種方法:在圖中2區(qū)域所示的編輯框中輸入ABC。多個符號用逗號隔開。3:使能/禁止ARM狀態(tài)與Thumb狀態(tài)交互。為了更好的優(yōu)化存儲空間,請使能該選項。4:設(shè)置優(yōu)化級別,共4級。Level 0為不優(yōu)化,Level 3為最高級別優(yōu)化。一般選擇default ,即Level 2級優(yōu)化。5:附加的優(yōu)化選項。6:輸出警告信息設(shè)置。為了更好的檢查程序,設(shè)置成All即可。7:頭文件路徑設(shè)置。(7)Asm選項卡,見圖11。與C/C+選項卡。圖11該選項卡與C/C+選項卡十分類似。這里重點說說圖中紅色區(qū)域條件匯編控制符號的應(yīng)用,因為這個在啟動代碼中可能會用到的。摘錄一段啟動代碼:IF :DEF:EXTERNAL_MODE LDR R0, =PINSEL2 LDR R1, =PINSEL2_Val STR R1, R0 ENDIF在這段代碼中,如果在圖中1區(qū)域的編輯框中輸入了符號:EXTERNAL_MODE,則本段代碼被編譯。(8)連接選項卡(Linker)對于不是特別大或者特殊的程序,選項卡的內(nèi)容默認(rèn)即可,編譯器會自動按照你的設(shè)置生成連接選項。(9)調(diào)試選項卡(Debug),見圖12。圖121:打開調(diào)試選項卡。2:使用軟件仿真。3:使用硬件仿真。(使用H-JTAG仿真參見我的博客:/zhzht19861011/archive/2010/08/28/5846510.aspx或者使用L-LINK仿真參見我的博客:/zhzht19861011/archive/2010/10/06/5924218.aspx)4,5:選中后,點擊調(diào)試按鈕自動運行到main函數(shù)。要去睡覺了,明天是周末,爭取把它寫完。(10)工具選項卡(Utilities),見圖13。圖131:點擊進入工具選項卡。2.配置Flsah下載按鈕(即: ) 使用J-LINK下載詳情見我的博文:/zhzht19861011/archive/2010/10/06/5924218.aspx8.維護工程組件、配置工具環(huán)境及管理書:點擊該快捷按鈕。彈出圖14所示界面。(1)工程組建選項卡(Project Components)。圖141:點擊進入工程組建選項卡.2:工程目標(biāo)組建。3:添加/刪除文件組。重點講述一下這個,應(yīng)用比較多。使用New (Insert)按鈕(圖3區(qū)域紅色劃線處)可在目標(biāo)工程中設(shè)置文件組,方便文件歸類,圖中創(chuàng)建了兩個文件組:H-File和User。在工程工作空間中,新建的文件組會體現(xiàn)出來,如下圖15所示:4:該區(qū)域頁面會列出用戶工程的文件組織結(jié)構(gòu)。用戶可以通過用鼠標(biāo)拖拉的方式來重新組織工程的源文件。好啦,快捷按鈕終于告一段落!下面開始創(chuàng)建源文件,不過我先去玩一下。哎呀,我的周末,我來啦!回來繼續(xù),其實就去吃個飯,昨晚舍友們胡扯,很晚才睡覺。今天早晨,呃應(yīng)該是今天上午起床就晚了點,然后打開電腦不一會的時間就到該吃飯的時間。第四。創(chuàng)建源文件。選擇菜單選項File New以創(chuàng)建一個新的源文件,選項會打開一個空的編輯窗口,用戶可以在此窗口里輸入源代碼。如果以擴展名*.C保存文件,Vision4將以彩亮字體顯示C源代碼。至于代碼,還是用一個適合軟件仿真的吧(不需要硬件就能全部模擬仿真),這個程序主要使用了定時器0并定時1S鐘,然后在中斷服務(wù)程序中翻轉(zhuǎn)I/O口P0.17的電平。如下所示:(本示例保存文件為MAIN.C)其中,cpu.h為自定義頭文件,內(nèi)容如下:(保存為cpu.h)cpp view plaincopyprint?1. /*2. *Copyright(c)*3. *Filename:main.c4. *LastmodifiedDate:2010-09-265. *LastVersion:1.06. *By:瓶蓋7. *8. *9. */10. #include 11. #includecpu.h 12. #defineBEEPCON(117)/*P0.17引腳控制B1,低電平蜂鳴*/13. 14. 15. 16. /*17. *名稱:IRQ_Time0()18. *功能:定時器0中斷服務(wù)程序,取反BEEPCON控制口。19. *入口參數(shù):無20. *出口參數(shù):無21. */22. void_irqIRQ_Time0(void)23. 24. if(IO0SET&BEEPCON)=0)/使I/O口P0.17每隔1秒翻轉(zhuǎn)一次25. IO0SET=BEEPCON;26. else27. IO0CLR=BEEPCON;28. T0IR=0x01;/清除中斷標(biāo)志 29. VICVectAddr=0x00;/通知VIC中斷處理結(jié)束30. 31. 32. 33. /*34. *35. *名稱:Time0Init()36. *功能:初始化定時器0,定時時間為1S,并使能中斷。37. *入口參數(shù):無38. *出口參數(shù):無39. *40. */41. voidTime0Init(void)42. /*Fcclk=Fosc*4=11.0592MHz*4=44.2368MHz43. Fpclk=Fcclk/4=44.2368MHz/4=11.0592MHz44. */45. T0PR=99;/設(shè)置定時器0分頻為100分頻,得110592Hz46. T0MCR=0x03;/匹配通道0匹配中斷并復(fù)位T0TC47. T0MR0=110592;/比較值(1S定時值)48. T0TCR=0x03;/啟動并復(fù)位T0TC 49. T0TCR=0x01;50. 51. /*設(shè)置定時器0中斷IRQ*/52. VICIntSelect=0x00;/所有中斷通道設(shè)置為IRQ中斷53. VICVectCntl0=0x24;/定時器0中斷通道分配最高優(yōu)先級(向量控制器0)54. VICVectAddr0=(uint32)IRQ_Time0;/設(shè)置中斷服務(wù)程序地址向量55. VICIntEnable=0x00000010;/使能定時器0中斷56. 57. 58. */59. /*60. *名稱:main()61. *功能:初始化I/O及定時器,然后等待中斷。62. *說明:在STARTUP.S文件中使能IRQ中斷(清零CPSR中的I位)。63. *64. */65. intmain(void)66. PINSEL0=0x00000000;/設(shè)置管腳連接GPIO67. IO0DIR=BEEPCON;/設(shè)置I/O為輸出68. IO0CLR=BEEPCON;69. Time0Init();/初始化定時器0及使能中斷70. while(1);/等待定時器0中斷71. 72. return(0);73. 74. 75. /*76. *EndOfFile77. */*Copyright (c)
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車開業(yè)活動策劃方案
- 殘奧會青少年活動方案
- 比賽競爭活動方案
- 漢川讀書活動方案
- 法律進醫(yī)院活動方案
- 櫥柜小區(qū)活動方案
- 水餃創(chuàng)意大賽活動方案
- 汝瓷研學(xué)活動方案
- 河南省美術(shù)比賽活動方案
- 江油聯(lián)誼活動策劃方案
- 醫(yī)務(wù)科崗前培訓(xùn)
- 市政雨污水管道清污清淤工程地下有限空間作業(yè)專項方案2020年10月10
- GB/T 8685-2008紡織品維護標(biāo)簽規(guī)范符號法
- 網(wǎng)電部管理重點(中)
- 醫(yī)療器械行業(yè)市場部人員崗位職責(zé)
- 旅行社導(dǎo)游帶團操作流程
- 部編版小學(xué)道德與法治三年級下冊期末質(zhì)量檢測試卷【含答案】5套
- 怎樣當(dāng)好一名師長
- DB21T 3354-2020 遼寧省綠色建筑設(shè)計標(biāo)準(zhǔn)
- 新生兒復(fù)蘇解析課件
- (完整版)重大危險源清單及辨識表
評論
0/150
提交評論