一、概述
????本文面向未接觸過Keil的新手,如果是職場(chǎng)老手可跳過此篇。為了快速上手,本文會(huì)跳過很多細(xì)節(jié)及解釋,如需要了解原理,請(qǐng)移步進(jìn)階篇。
二、 軟件介紹
????Keil提供了包括C編譯器、宏匯編、鏈接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(μVision)將這些部分組合在一起。
????目前軟件對(duì)中文的支持不友好,不建議安裝網(wǎng)上的一些漢化包之類的。另外建立的工程文件路徑也盡量不要存在中文,否則可能會(huì)出現(xiàn)一些異常。
演示版本:5.24a
三、名詞釋義
IDE:Integrated Development Environment,是開發(fā)集成環(huán)境的意思,一般包括代碼編輯器、編譯器、調(diào)試器和圖形用戶界面等工具。因?yàn)樽銮度胧介_發(fā)的,首先需要有可以編寫代碼的編輯器,然后需要有把代碼轉(zhuǎn)換成機(jī)器可執(zhí)行代碼的編譯器,有時(shí)候可能需要在對(duì)應(yīng)硬件芯片上調(diào)試,那就需要有個(gè)調(diào)試器,為了操作方便,一般會(huì)把這些都圖形化。這么下來的一整套工具集成在一個(gè)應(yīng)用程序里,就是所謂的IDE,這篇文章介紹的Keil uVision就是IDE的一種。
Keil:其實(shí)Keil是個(gè)公司名,其旗下開發(fā)的軟件都以Keil開頭命名。目前有Keil MDK-ARM、Keil C51、KeilC166和KeilC251等版本。
uVision:uVision是由keil公司開發(fā)的集成開發(fā)環(huán)境(IDE),可以進(jìn)行代碼編輯,文件管理,程序的編譯調(diào)試等。
MDK、C51:如果想要開發(fā)ARM內(nèi)核的芯片,需要安裝MDK-ARM,如果想要開發(fā)51內(nèi)核的芯片,那就需要安裝c51。也就是說,MDK、c51只是Keil針對(duì)不同芯片內(nèi)核開發(fā)的不同開發(fā)集成環(huán)境。
CMSIS:ARM Cortex? 微控制器軟件接口標(biāo)準(zhǔn)(CMSIS:Cortex Microcontroller Software Interface Standard) 是 Cortex-M 處理器系列的與供應(yīng)商無關(guān)的硬件抽象層。
燒錄:燒軟件只是一種叫法,來源于最早刻錄光盤,因?yàn)槭怯眉す庵v數(shù)據(jù)燒在光盤上,所以后來人們把這種不可逆的記錄方式稱之為燒錄。
bin文件:二進(jìn)制文件,其用途依系統(tǒng)或應(yīng)用而定。一種文件格式binary的縮寫。一個(gè)后綴名為".bin"的文件,只是表明它是binary格式。一般來講是機(jī)器代碼,匯編語言編譯后的結(jié)果。
axf文件:axf文件是ARM芯片使用的文件格式,它除了包含bin代碼外,還包括了輸出給調(diào)試器的調(diào)試信息,例如每行C語言所對(duì)應(yīng)的源文件行號(hào)等。
Hex文件:Intel HEX文件是由一行行符合Intel HEX文件格式的文本所構(gòu)成的ASCII文本文件。在Intel HEX文件中,每一行包含一個(gè)HEX記錄。這些記錄由對(duì)應(yīng)機(jī)器語言碼和/或常量數(shù)據(jù)的十六進(jìn)制編碼數(shù)字組成。Intel HEX文件通常用于傳輸將被存于ROM或者EPROM中的程序和數(shù)據(jù)。
四、下載鏈接
????直接官網(wǎng)下載,用注冊(cè)機(jī)生成Lisence即可,個(gè)人用沒什么問題,企業(yè)用建議購(gòu)買正版,不然會(huì)被查到的。(會(huì)有郵件警告到公司老總那去,別問我為什么知道)
五、軟件使用
1、軟件安裝
????這個(gè)沒什么特殊的,一路next就行。如果是自己用的,一般不建議裝在C盤,因?yàn)楹罄m(xù)芯片包都會(huì)默認(rèn)安裝在此目錄下,文件會(huì)變得很大。
2、下載/安裝芯片包
????跟舊版本的Keil不一樣,Keil4以前是軟件里集成芯片包,也就是只要下載安裝完Keil的軟件,就有對(duì)應(yīng)的一些芯片可供選擇使用。但由于現(xiàn)在軟件支持的芯片越來越多,軟件的體量也就越來越大,如果把所有芯片包都跟軟件打包一起下載,那軟件估計(jì)得有幾百個(gè)G。所以為了簡(jiǎn)潔,Keil把集成環(huán)境跟芯片包、例程等東西分開單獨(dú)下載,具體要用到什么芯片再自己去下載安裝對(duì)應(yīng)的芯片包。
- 在Keil里下載
????點(diǎn)擊"Pack Installer",也就是這個(gè)圖標(biāo),第一次打開可能會(huì)很慢,因?yàn)橐獜墓倬W(wǎng)自動(dòng)更新所有芯片包的信息。這時(shí)候很坑的一個(gè)點(diǎn)是,你不更新,可能又沒法找到你想要的芯片,所以在信息更新完前,只能乖乖地等它更新完。然而這種國(guó)外鏈接,又時(shí)不時(shí)給你斷一下。
????在更新完后,在左邊的窗口中找到想要安裝的芯片型號(hào),可以選擇整個(gè)系列(或具體芯片,結(jié)果是一樣的),這里以STM32G071為例。然后在右邊窗口中,找到"Device Specific"里面"Keil:STM32G0xx_DFP"這一項(xiàng),點(diǎn)擊按鈕"Install"下載安裝。(同樣的,網(wǎng)絡(luò)卡的時(shí)候下載很慢,還經(jīng)常斷開鏈接)
????等到下載安裝完成后(右下角有進(jìn)度條),“Install"鍵會(huì)變成"up to date”,這時(shí)候說明安裝成功。
- 在官方網(wǎng)站下載
????前面那種方法在很多時(shí)候都是行不通的,不是網(wǎng)絡(luò)不好就是網(wǎng)絡(luò)不好。所以可以通過另外一個(gè)方式更新芯片包,那就是先從官網(wǎng)提前下載好芯片包,再點(diǎn)擊安裝。
官網(wǎng)鏈接:https://www.keil.com/dd2/Pack/
????同樣,先找到對(duì)應(yīng)的芯片(這里展開時(shí)可能不會(huì)顯示所有芯片,找不到對(duì)應(yīng)芯片時(shí),點(diǎn)擊下面"View all in family"展示所有芯片),選擇"xxxxx_DFP",點(diǎn)"Download Recommended Pack"即可下載。
????這種方式有個(gè)好處就是即使在官網(wǎng)無法下載時(shí),也可以假借他人之手去下載。為了防止小伙伴們?cè)诠倬W(wǎng)下載也出現(xiàn)網(wǎng)絡(luò)中斷的情況,這里提供STM32常用系列的芯片包供下載使用(版本可能不是最新的,可以湊和著用)。
3、新建工程
????點(diǎn)擊"Project"->"New Project"新建工程,在彈出的窗口中選擇工程要保存的路徑,設(shè)置好工程名稱,點(diǎn)擊保存。由于是新建工程,軟件會(huì)默認(rèn)彈出芯片選擇框,讓你選擇當(dāng)前使用的單片機(jī)型號(hào),這里我們選擇STM32G071RBTx,然后是選擇接口標(biāo)準(zhǔn),這里我們選擇CMSIS。
????做完以上幾步,一個(gè)簡(jiǎn)單的工程就新建完成了。由于時(shí)間關(guān)系,這里我們使用了超能力——STM32CubeMX配置并生成了一個(gè)工程。這里面實(shí)現(xiàn)了調(diào)試口的初始化及一個(gè)GPIO口的初始化,也就是下來我們要用到的LED燈所使用的PA5口。
4、新建/添加文件
????有了工程還不夠,就像建房子一樣,這時(shí)候只是把鋼筋水泥弄好,做出個(gè)房子的外型,離真正可以居住的溫馨小屋還差億點(diǎn)點(diǎn)距離。所以這時(shí)候就得加點(diǎn)核心進(jìn)來,也就是我們的源代碼。
????因?yàn)檫@里有演示使用的是STM32CubeMX生成的工程,所以里面已經(jīng)添加好一些初始化的代碼文件,我們現(xiàn)在要做的就是把閃燈的邏輯文件也添加進(jìn)來。由于時(shí)間關(guān)系,閃燈的代碼文件和邏輯都已經(jīng)準(zhǔn)備好了。
5、配置工程
????為了可以正常地跟開發(fā)板及燒錄器進(jìn)行匹配,這里我們還需要對(duì)工程進(jìn)行一些配置。
- 包含頭文件路徑
????前面只是添加了必要的核心代碼文件,這時(shí)候這些文件還是屬于各自管各自的。雖然代碼里可能有在文件A里引用了B文件(include進(jìn)行包含),但實(shí)際Keil這個(gè)軟件并不知道A文件B文件各自放在什么地方,要去哪里找。所以需要我們告訴它每個(gè)文件的路徑。由于.c文件是直接添加到工程里的,此時(shí)文件路徑就已經(jīng)包含進(jìn)來,但是對(duì)于.h文件,軟件還不清楚路徑在哪,所以我們需要手動(dòng)添加.h所在的路徑。
- 選擇燒錄器
????這里可以選擇在線調(diào)試或離線仿真兩種方式,如果有開發(fā)板,建議選在線調(diào)試直接在板子上進(jìn)行實(shí)驗(yàn)。選擇了在線調(diào)試后,需要選擇燒錄器的類型,這里我們選擇ST-Link,也就是開發(fā)板上自帶的這個(gè)燒錄器的類型。
- 生成Hex
????有些場(chǎng)合下,只能通過Hex文件進(jìn)行燒錄,這時(shí)候就需要在工程里勾選"Create HEX File",這樣在編譯之后工程會(huì)自動(dòng)生成Hex的可執(zhí)行文件。
- 選擇燒錄后復(fù)位
????選擇"Reset and Run"可以在軟件燒錄后立即運(yùn)行,不然會(huì)發(fā)現(xiàn)一個(gè)現(xiàn)象,就是燒完后程序不會(huì)跑,需要手動(dòng)復(fù)位后才能跑起來。
????為了防止出現(xiàn)些奇奇怪怪的問題,這里建議把"Erase Full Chip"勾選上。
6、編譯
????添加完文件,配置好工程后,我們就可以點(diǎn)編譯,這時(shí)候軟件會(huì)自動(dòng)調(diào)用編譯器、鏈接器等一步步把源代碼(.c.h文件),轉(zhuǎn)換成機(jī)器可識(shí)別的.axf文件(包含二進(jìn)制的機(jī)器碼和一些調(diào)試信息),如果勾選了生成Hex,還會(huì)生成十六進(jìn)制的.Hex可執(zhí)行文件。
????注:如果此時(shí)出現(xiàn)了Error信息,則無法編譯通過,需要修改源代碼直到編譯結(jié)果0-Error,才可以正常生成可執(zhí)行文件。如果出現(xiàn)Warning信息,可視情況進(jìn)行處理,Warning信息不影響編譯結(jié)果,但建議多關(guān)注下這些Warning信息,很多Bug就隱藏在里面。
7、燒錄
????經(jīng)過前面的步驟,我們已經(jīng)得到了機(jī)器中識(shí)別的執(zhí)行文件.axf。并且工程也已經(jīng)配置了對(duì)應(yīng)的燒錄器及芯片,此時(shí)先連接燒錄器到開發(fā)板上,點(diǎn)擊"Project"->“Optinos for Target ‘xxx’”->“Debug”->"Setting"查看當(dāng)前是否已正常連接。如果已正常連接,點(diǎn)擊,可以看到左下方有個(gè)燒錄的進(jìn)度條。
????燒錄完成后,我們看下板子,燈開始正常閃,說明程序已經(jīng)正常跑起來了。
8、調(diào)試
- 在線調(diào)試
????在有開發(fā)板的情況下,可以把軟件燒進(jìn)單片機(jī)中,并使用燒錄器對(duì)運(yùn)行的程序進(jìn)行實(shí)時(shí)監(jiān)控??刹榭串?dāng)前單片機(jī)內(nèi)核、外設(shè)、ROM、RAM的變化情況,并且Keil提供了一套比較友好的人機(jī)交互界面,可以幫助快速定位查找問題。
- 離線仿真
????如果是沒有開發(fā)板的情況,想要大致跑下自己寫的邏輯有沒有問題,可以使用離線仿真這種方式。但如果邏輯中涉及跟單片機(jī)外設(shè)或開發(fā)板外圍電路的一些配合,則不適合使用這種方式調(diào)試。文章來源:http://www.zghlxwxcb.cn/news/detail-778085.html
六、注意事項(xiàng)
- 工程路徑下不可以有中文,否則可能編譯或調(diào)試時(shí)會(huì)有影響。
- 工程文件路徑不可過長(zhǎng),這個(gè)軟件對(duì)路徑的識(shí)別是有長(zhǎng)度限制的,當(dāng)文件的總路徑長(zhǎng)度超過一定限制后,編譯時(shí)可能會(huì)報(bào)無法查找到相關(guān)文件。
七、相關(guān)鏈接
????Keil5軟件使用-進(jìn)階工程配置篇、Keil5軟件使用-進(jìn)階調(diào)試篇文章來源地址http://www.zghlxwxcb.cn/news/detail-778085.html
到了這里,關(guān)于【工具使用】Keil5軟件使用-基礎(chǔ)使用篇的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!