找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1994|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

個(gè)人筆記-Keil軟件的使用

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:866313 發(fā)表于 2024-1-16 23:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

Keil 軟件的使用
以下內(nèi)容是我在閱讀《單片機(jī)輕松入門(mén)》這本書(shū)籍后,對(duì)書(shū)中內(nèi)容進(jìn)行補(bǔ)充擴(kuò)展得到,僅作為個(gè)人的學(xué)習(xí)過(guò)程記錄

電腦上還沒(méi)有安裝 Keil 軟件的朋友可以參考上一篇帖子:Keil 軟件的安裝步驟

鼠標(biāo)左鍵雙擊桌面上的“Keil uVision2”快捷方式圖標(biāo),如下圖所示


即可進(jìn)入 μVision IDE(集成開(kāi)發(fā)環(huán)境)。在此之前,Windows 10 家庭版將會(huì)彈出“用戶(hù)賬戶(hù)控制”頁(yè)面,我們點(diǎn)擊“是”允許“Uv2.exe”程序運(yùn)行,如下圖所示


然后就會(huì)彈出一個(gè)標(biāo)準(zhǔn)的 Windows 程序窗口。該程序窗口由多個(gè)子窗口組成,我們初次進(jìn)入 μVision IDE 時(shí),只能看到工程管理窗口、源程序窗口和輸出窗口。如下圖所示
?

左 側(cè)的工程管理窗口有 3 個(gè)選項(xiàng)卡:文件、寄存器、文檔選項(xiàng)卡;我們剛進(jìn)入 μVision IDE 時(shí)顯示的是文件選項(xiàng)卡,顯示該工程中的所有文件,如果沒(méi)有任何工程被打開(kāi),這里將沒(méi)有內(nèi)容被顯示,如上圖所示;中間的選項(xiàng)卡是寄存器,在進(jìn)入程序調(diào)試時(shí)自 動(dòng)切換到該窗口,用于顯示有關(guān)寄存器值的內(nèi)容,如下圖所示
?

第 3 個(gè)選項(xiàng)卡是一些幫助文件、電子文檔的目錄索引,如果遇到疑難問(wèn)題,可以隨時(shí)到這里來(lái)查找答案。如下圖所示
?
圖 0-5

1 源文件的建立
μVision IDE 內(nèi)集成了一個(gè)文本編輯器,便于我們?cè)?μVision IDE 中直接進(jìn)行源程序的輸入。
對(duì)于匯編或 C 語(yǔ)言,該文本編輯器具有語(yǔ)法高亮功能,即會(huì)對(duì)關(guān)鍵字進(jìn)行變色顯示。如下圖所示
?

在圖 0-5 中選擇菜單欄的“File-->New...”或者按下快捷鍵Ctrl+N,在源程序窗口中將出現(xiàn)一個(gè)新的文件輸入窗口,如下圖所示
?

我們可以在該窗口里輸入源程序,我們將下面兩行程序輸入進(jìn)去
SETB        P1.0
END
如下圖所示
?

輸入完畢之后,選擇菜單欄的“File-->Save”或者按下快捷鍵Ctrl+S,給該文件命名保存。重命名時(shí)必須要加上擴(kuò)展名,一般匯編程序以".asm"或".a51"為擴(kuò)展名。我這里重命名為“201.asm”,如下圖所示
?

注意:μVision IDE 對(duì)于中文的支持不好,有時(shí)會(huì)出現(xiàn)半個(gè)漢字的現(xiàn)象。因此,在書(shū)寫(xiě)注釋時(shí)要小心。建議使用其它編輯器(如notepad--) 來(lái)輸入源文件。μVision IDE 能自動(dòng)識(shí)別被 IDE 外部軟件改變了的源文件,即加果用 μVision IDE 打開(kāi)了一個(gè)文件,而該文件又由其它編輯器編輯并保存,只要切換回 μVision IDE,μVision IDE 就能感知文件已發(fā)生變化,并詢(xún)問(wèn)是否重新加載。notepad-- 軟件也具有同樣的功能,兩者配合使用非常方便。

2 工程的建立
在 項(xiàng)目開(kāi)發(fā)過(guò)程中,除了編寫(xiě)源程序之外,我們還要選擇器件——MCU,確定編譯/匯編、鏈接的參數(shù),指定調(diào)試的方式等等。為了方便管理和使用,Keil 使用工程(Project)將所需設(shè)置的參數(shù)和所有文件都配置在一個(gè)工程中,我們只能對(duì)工程而不能對(duì)單一源程序進(jìn)行編譯(匯編)和鏈接等操作。下面我們就 一起來(lái)看一看如何建立和設(shè)置工程。
在圖 0-5 中選擇菜單欄的“Project-->New Project...”,出現(xiàn)“Create New Project(創(chuàng)建新工程)”的對(duì)話(huà)框,如圖 2-1 所示。
?
圖 2-1 創(chuàng)建新工程對(duì)話(huà)框

要求對(duì)給工程命名并保存。一般我們把工程建立在與源文件同一個(gè)文件夾中,注意不用加擴(kuò)展名,單擊“保存(S)”即可。
進(jìn) 入下一步,選擇目標(biāo)器件——MCU,如圖 2-2 所示。Keil 支持所有 400 余種以 80C51 為內(nèi)核的單片機(jī)系列。我們可以根據(jù)需要選擇相應(yīng)的 MCU,這里以選擇 Atmel 公司的 89C51 為例。在圖 2-2 左側(cè)的“Data base(數(shù)據(jù)庫(kù))”列表框中單擊展開(kāi)“Atmel”供應(yīng)商名稱(chēng),逃擇其中的“AT89C51”器件;在其右邊的“Description:(說(shuō)明)”顯 示區(qū)域中有關(guān)于該 MCU 特性的一般性描述。單擊“確定”按鈕即可返回主界面。此時(shí)還會(huì)詢(xún)問(wèn)我們“Copy Standard 8051 Startup Code to Project Folder and Add File to Project(是否將啟動(dòng)代碼復(fù)制到工程文件夾下,并加入到工程中)”,我們先點(diǎn)擊“是(N)”添加進(jìn)來(lái)看看,如下圖所示
?
圖 2-2 為工程選擇目標(biāo) MCU

選擇好 MCU 回到主界面后,工程管理窗口會(huì)出現(xiàn)一些目錄信息;但目前這個(gè)工程里面還沒(méi)有任何文件,是一個(gè)空的工程,我們需要為這個(gè)工程添加文件。
我們單擊左側(cè)列表框中目錄 Target1 下的 Source Group1 子目錄,使其高亮顯示;然后右擊鼠標(biāo),在出現(xiàn)的快捷菜單中選擇“Add File to Group 'Source Group1'”,如下圖所示
?

Keil 默認(rèn)加入 C 源文件,因此,在文件瀏覽框中未顯示該文件夾下的匯編文件。如果要加入?yún)R編語(yǔ)言源文件,需單擊“文件類(lèi)型”下拉列表框右側(cè)的下三角按鈕,彈出下拉列表,選擇“Asm Source file(*.s*;*.src;*.a*)”。如下圖所示
?

這時(shí)才會(huì)將文件夾下的“*.asm”文件顯示出來(lái)。如下圖所示
?

雙擊要加入的文件名,或者單擊要加入的文件名后單擊 Add 按鈕,都可將該文件加入到工程中。如下圖所示
?

文件加入后,添加文件對(duì)話(huà)框并不會(huì)消失,還可加入其它文件到工程中。如果不再需要加入其它文件,單擊 Close 按鈕,關(guān)閉該對(duì)話(huà)框。如下圖所示
?

注意: 由于在文件加入工程中后,添加文件對(duì)話(huà)框并不會(huì)消失,所以剛開(kāi)使使用該軟件時(shí),常會(huì)誤以為文件沒(méi)有加入成功。再次雙擊文件或再次單擊 Add 按鈕,會(huì)出現(xiàn)一個(gè)如下圖所示對(duì)話(huà)框,提示該文件已加入,不需要再次加入,此時(shí)只要單擊“確定”按鈕,然后單擊 Close 按鈕,關(guān)閉對(duì)話(huà)框即可。
?

關(guān)閉對(duì)話(huà)框后回到主界面,剛加入的文件名出現(xiàn)在工程管理器的 Source Group 1 下一級(jí)。雙擊該文件名,即可在右邊打開(kāi)該文件。
?

3 工程的設(shè)置
工程新建好后,我們還要對(duì)工程進(jìn)行進(jìn)一步設(shè)置,以便滿(mǎn)足每個(gè)工程的個(gè)性化要求。
單擊工程窗口下的 Target 1,使其高亮顯示;然后選擇菜單欄的“Project-->Options for Target 'Target 1'”,如下圖所示
?

彈出對(duì)工程設(shè)置的對(duì)話(huà)框。該對(duì)話(huà)框非常復(fù)雜,有 8 個(gè)選項(xiàng)卡,但大部分設(shè)置項(xiàng)取默認(rèn)值即可。
設(shè)置對(duì)話(huà)框中 Target 選項(xiàng)卡如下圖所示。
?

  • Xtal(MHz):文本框中的數(shù)值是晶振頻率值,默認(rèn)值是所選目標(biāo) MCU 的最高可用頻率值。對(duì)于 AT89C51 而言是 24MHz,該數(shù)值與最終產(chǎn)生的目標(biāo)代碼無(wú)關(guān),僅用于軟件模擬調(diào)試時(shí)顯示程序執(zhí)行時(shí)間。
    ?
  • Memory Model:下拉列表框用于設(shè)置 RAM 使用情況,有 3 個(gè)選擇項(xiàng):
    ?

    • Small:所有變量都在單片機(jī)內(nèi)部 RAM 中;
    • Compact:可以使用一頁(yè)外部擴(kuò)展 RAM;
    • Large:可以使用全部外部擴(kuò)展 RAM。

  • Code Rom Size:下拉列表框用于設(shè)置 ROM 空間的使用,同樣也有 3 個(gè)選擇項(xiàng):
    ?

    • Small:只用低于 2KB 的程序空間;
    • Compact:?jiǎn)蝹(gè)函數(shù)的代碼量不能超過(guò) 2KB,整個(gè)程序可以使用 64KB 程序空間;
    • Large:可用全部 64KB 空間。

  • Operating system:下拉列表框是操作系統(tǒng)選擇。
    ?

  Keil 提供了兩種操作系統(tǒng):RTX-51 Tiny 和 RTX-51 Full。如果一個(gè)工程不使用操作系統(tǒng),應(yīng)取該項(xiàng)的默認(rèn)值 None(不使用任何操作系統(tǒng))。
  • Use On-chip ROM(0x0-0xFFF) 復(fù)選框用于確認(rèn)是否僅僅使用片內(nèi) ROM(注意:選擇該項(xiàng)并不會(huì)影響最終生成的目標(biāo)代碼量);
    ?
  • Off-chip Code memory 選項(xiàng)區(qū)域用于確定系統(tǒng)擴(kuò)展 ROM 的地址范圍。
    ?
  • Off-chip Xdata memory 選項(xiàng)區(qū)域組用于確定系統(tǒng)擴(kuò)展 RAM 的地址范圍。
    ?
  • Code Banking 復(fù)選框用于設(shè)置代碼分組的情況。
    ?

上述選擇項(xiàng)必須根據(jù)使用的硬件來(lái)決定。
設(shè)置完畢后,單擊 Output 標(biāo)簽進(jìn)入輸出設(shè)置選項(xiàng)卡,如下圖所示。
?
該頁(yè)面卡中也有很多內(nèi)容,其中:
  • Create HEX File 用于生成可執(zhí)行代碼文件。
    ?

  該文件是 Intel HEX 格式文件,擴(kuò)展名為.HEX,上板驗(yàn)證時(shí)可以使用燒錄器將其寫(xiě)入單片機(jī)芯片內(nèi)。默認(rèn)情況下該項(xiàng)未被選中。如果要將可執(zhí)行代碼寫(xiě)入芯片,就必須選擇該項(xiàng)。這一點(diǎn)是初學(xué)者易疏忽的,在此特別提醒注意。
  • Debug Information 復(fù)選框:產(chǎn)生調(diào)試信息。
    ?

  如果需要對(duì)程序進(jìn)行調(diào)試,應(yīng)當(dāng)選擇該項(xiàng)。
  • Browse Information 復(fù)選框:產(chǎn)生瀏覽信息。該信息可以用 View-->Browse 來(lái)查看。這里取默認(rèn)值。
    ?
  • Select Folder for Objects... 按鈕:送擇最終目標(biāo)文件所在的文件夾。默認(rèn)是與工程文件在同一個(gè)文件夾中。
    ?
  • Name of Executable 文本框:用于指定最終生成的目標(biāo)文件的名字。默認(rèn)與工程名字相同。
    ?

上面兩項(xiàng)一般不需要更改。
  • Create Library 單選按鈕:
    ?

  用于確定是否將目標(biāo)文件生成庫(kù)文件。
  • After Make 選項(xiàng)區(qū)域:
    ?
    用于確定編譯完成之后做的一些工作。

    • 若選擇 Beep When Complete,則在建立目標(biāo)文件完成后響鈴?fù)ㄖ?/font>
    • 若選擇 Start Debugging,則編譯完成后自動(dòng)開(kāi)始調(diào)試;
    • 若選擇 Run User Program #1 或 Run User Program #2,則可以自定義編譯完成后立即運(yùn)行某個(gè)程序等。

    這組選項(xiàng)可用于提高編程效率,如建立目標(biāo)文件完畢后自動(dòng)開(kāi)始調(diào)試或自動(dòng)調(diào)用燒錄器程序以寫(xiě)片等。
工程設(shè)置對(duì)話(huà)框中其它各選項(xiàng)卡與 C51 編譯選項(xiàng)、A51 匯編選項(xiàng)、BL51 鏈接器的鏈接選項(xiàng)等用法有關(guān),這里不作詳敘。通?扇∧J(rèn)設(shè)置,不必修改。
設(shè)置完成后單擊“確認(rèn)”按鈕返回主界面,工程文件設(shè)置完畢。

4 編譯、鏈接
設(shè)置好工程后,即可進(jìn)行編譯、鏈接。
?

上圖是有關(guān)編譯、鏈接以及工程設(shè)置的工具條。該工具條中各按鈕的具體含義如下:
  • 編譯或匯編當(dāng)前文件:若當(dāng)前文件是匯編語(yǔ)言程序文件,則使用 A51 匯編器對(duì)匯編語(yǔ)言源程序進(jìn)行匯編處理;若當(dāng)前文件是 C 語(yǔ)言源程序文件,則使用 C51 編譯器進(jìn)行編譯處理。得到可浮動(dòng)地址的目標(biāo)代碼。
  • 建立目標(biāo)文件:根據(jù)匯編或編譯得到的目標(biāo)文件,并調(diào)用有關(guān)庫(kù)模塊,鏈接產(chǎn)生絕對(duì)地址的目標(biāo)文件。如果在上次匯編或編譯過(guò)后又對(duì)源程序作了修改,將先對(duì)源程序進(jìn)行匯編或編譯,然后再鏈接。
  • 重建全部目標(biāo)文件:對(duì)工程中所有文件進(jìn)行重新編譯、匯編處理,然后再進(jìn)行鏈接以產(chǎn)生目標(biāo)代碼。使用該按鈕可以防止由于一些意外情況(如系統(tǒng)日期不正確)而造成的源文件與目標(biāo)代碼不一致。
  • 停止建立:在建立目標(biāo)文件的過(guò)程中,可以單擊該按鈕停止這一工作。
  • 工程設(shè)置:該按鈕用于對(duì)工程進(jìn)行設(shè)置,其效果如同選擇“Project-->Options for Target 'Target 1'”。

以 上建立目標(biāo)文作的操作也可以通過(guò)選擇“Project-->Translate...”、“Project-->Build target”、“Project-->Rebuild all target files”和“Project-->Stop build”來(lái)完成。
編譯過(guò)程中的信息將出現(xiàn)在輸出窗口中的 Build 頁(yè)中。如果源程序中有語(yǔ)法錯(cuò)提,則會(huì)出現(xiàn)錯(cuò)誤文檔。雙擊錯(cuò)誤文檔行,可以定位到出錯(cuò)的源程序的相應(yīng)行。
?

右鍵 STARTUP.A51,選擇“Remove File 'STARTUP.A51'”將其從工程中刪除
?

再次建立目標(biāo)文件,最終得到如圖所示結(jié)果。
?

出了目標(biāo)代碼量的大小(2字節(jié))、內(nèi)部 RAM 使用量(8字節(jié))、外部 RAM 使用量(0字節(jié)),提示生成了 HEX 格式的文件。在這一過(guò)程中,還會(huì)生成一些其它文件,產(chǎn)生的目標(biāo)文件被用于 Keil 的仿真與調(diào)試。

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1109254 發(fā)表于 2024-1-17 09:37 | 只看該作者
好詳細(xì)的帖子。辛苦了!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:34149 發(fā)表于 2024-1-17 11:19 | 只看該作者
看了樓主的帖子,才發(fā)現(xiàn)以前的操作好多都不對(duì)!好多功能都沒(méi)有正確理解。今天看到這么詳細(xì)的解釋?zhuān)K于大徹大悟,感謝樓主的無(wú)私奉獻(xiàn)!樓主辛苦了!
回復(fù)

使用道具 舉報(bào)

地板
ID:1047454 發(fā)表于 2024-1-17 21:23 | 只看該作者
好詳細(xì)的KEIL使用操作的文章,學(xué)習(xí)了。謝謝樓主的分享。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表