【工具使用】Keil工具的使用——常用配置介紹

Keil調試具體教程學習

目錄

???????Keil調試具體教程學習

常用功能總結

(2)目標設置(Target)

①設置晶振頻率

②跨模塊優化選項

③微庫選項

(3)輸出設置(Output)

①輸出文件路徑和輸入文件名稱

②調試信息——Debug Infomation

③生成.Hex可執行文件——Create HEX File

④瀏覽信息——Browse Infomation

⑤生成.Lib封裝庫文件——Create Library

⑥生成.bat編譯執行腳本——Create Batch File

(4)生成列表設置(Listing)

紅框中:生成Map文件

(5)用戶選項(User)

(6)C/C++設置(C/C++)

①預處理符號——Preprocessor Symbols

②語言/代碼規則設置

(9)調試設置配置(Debug)

①在線仿真

②離線仿真


Keil調試具體教程學習

常用功能總結

(2)目標設置(Target)

①設置晶振頻率

????????在Xtal(MHz)后面可以填寫當前使用的開發板上芯片系統使用的晶振頻率,一般STM32開發板上的晶振都是8Mhz。這個只會在仿真調試中使用,如果直接用 ST-Link仿真器在開發板上在線調試,這個可以不用管。

②跨模塊優化選項

????????勾選 "Use Cross-Module Optimization" 選擇跨模塊優化,此選項可在編譯鏈接后對文件鏈接再進一步進行優化,從而減少一些開銷。選擇此功能時,可能會導致編譯時間變長,但同樣的可以使得編譯后所使用的空間減少,但一般不勾選。

③微庫選項

????????勾選 "Use MicroLIB" 可選擇使用標準缺省庫,勾選這個會導致很多庫函數用不了,但換來的是節省了大量的空間。這個跟串口使用 printf 函數有關聯,但一般不勾選。

(3)輸出設置(Output)

①輸出文件路徑和輸入文件名稱

????????在 "Select Folder for Objects" 里可以設置輸出文件的路徑,一般保存在我們創建的OBJ文件夾下;在 "Name of Executable" 后面可以設置輸出的文件名。這個輸出文件路徑和文件名也是Keil工程燒錄和調試獲取文件的依據。

????????比如這里輸出路徑設置為 /OBJ,文件名為Template,那燒錄時,Keil會去查找當前工程路徑下 /OBJ 路徑下是否存在 Template.axf 這個文件,有就燒錄,沒有就報錯。如果要使用.Hex文件燒錄,則文件名這里填寫TestPro.Hex。

????????如果使用 ST-Link 仿真器下載調試,若勾選 Create HEX File ,點擊Download默認燒錄的是.Hex文件,無法進入在線調試;若不勾選 Create HEX File ,點擊Download燒錄的是.axf文件,是可以進入在線調試。

注:調試只能使用.axf文件,因為.Hex文件不帶調試信息,另外若調試結束,點擊關閉調試時會出現直接關閉工程文件,是因為你的工程文件包含中文,都改成英文就不會出現此問題。

②調試信息——Debug Infomation

????????勾選 "Debug Infomation" 可以選擇是否生成調試信息,注意去掉此勾選項時,無法打斷點調試。一般勾選。

③生成.Hex可執行文件——Create HEX File

????????勾選 "Create HEX File" 即可在編譯后生成.hex文件。根據上述自己的需求,點擊是否勾選。

④瀏覽信息——Browse Infomation

????????勾選 "Browse Infomation" 可以選擇是否生成瀏覽信息,有這個瀏覽信息時,可以在Keil里索引函數或變量的定義,調用等,沒有這個信息就無法把這些信息關聯起來。如果不用Keil作為代碼編輯器的小伙伴,去掉這個勾選項,可以減少編譯的時間。一般勾選。

⑤生成.Lib封裝庫文件——Create Library

????????當需要封裝模塊或打包 SDK 包時,可以勾選 "Create Library" 這個選項,該選項與"Create Executable"互斥,選擇生成.lib文件而不是完整的可執行.axf文件。這種一般是用于提供二次開發的軟件包使用。一般不勾選。

⑥生成.bat編譯執行腳本——Create Batch File

????????勾選 "Create Batch File" 即可在編譯后生成.bat的編譯執行腳本,即可以不用打開Keil工程,只需要執行編譯執行腳本即可編譯工程軟件。

(4)生成列表設置(Listing)

紅框中:生成Map文件

  • Linker Listing: .\Listings\TestPro.map:主要是用來生成代碼詳細信息的map文件,用于后面的代碼分析。這里面有選項建議全部勾選上。
  • Memory Map:包含一個內存映射,其中包含鏡像中每個加載區,執行區和輸入節的地址和大小,包括調試和鏈接器生成的輸入節。
  • Callgraph:以HTML格式創建函數的靜態調用圖文件。調用圖給出了鏡像中所有函數的定義和參考信息。
  • Symbols:列出本地,全局和鏈接器生成的符號以及符號值。
  • Cross Reference:列出輸入節之間的所有交叉引用。
  • Size Info:給出鏡像中每個輸入對象和庫成員的代碼和數據(RO數據,RW數據,ZI數據和調試數據)大小的列表。
  • Totals Info:提供輸入對象和庫的代碼和數據(RO數據,RW數據,ZI數據和調試數據)大小的總和。
  • Unused Sections Info:列出從鏡像中刪除的所有未使用的部分。
  • Veneers Info:提供鏈接器生成的Thumb/ARM膠合代碼的詳細信息。

????????Map文件主要用于查看你的代碼所占空間的大小,如果你用到芯片內部的Flash的話,就需要查看你從哪里開始擦寫Flash。

(5)用戶選項(User)

Beep When Complete:編譯完成發出聲音。勾選時在編譯完成時會響一下。

(6)C/C++設置(C/C++)

①預處理符號——Preprocessor Symbols

Define:用于做一些工程全局宏定義

注:在這里修改宏定義時,需要 全編譯 才可生效,局部編譯是不生效的

②語言/代碼規則設置


Optimization:優化等級,這個會比較常用,當項目工程較大,對芯片空間比較吃緊時,可以考慮提升優化等級。ST的芯片這里有0~3,4個等級可選。

-O0應用最小優化大多數優化都被關閉,生成的代碼具有最佳的調試視圖。
-O1應用受限優化例如,刪除未使用的內聯函數和未使用的靜態函數。在這個優化級別,編譯器還應用自動優化,例如刪除冗余代碼和重新排序指令以避免互鎖情況。生成的代碼經過合理優化,具有良好的調試視圖。
-O2應用高優化(這是默認設置)在此級別應用的優化利用了ARM對處理器體系結構的深入了解,利用給定目標的特定于處理器的行為。它生成優化良好的代碼,但有限調試視圖。
-O3應用最積極的優化優化符合用戶的-Ospace / -Otime選擇。默認情況下,多文件編譯時啟用,這會導致更長的編譯時間,但會提供最高級別的優化。

? ? ? ? 目前就使用經驗來看,優化等級2節省的空間最多,具體原理還沒去細究。

注:提升優化等級后,對代碼的規范嚴格度提升,調試的友好程度會降低,請適當使用。

One ELF Section per Function:優化每一段函數ELF段(建議都勾選);每個函數都會產生一個ELF段,勾選該功能允許優化每個ELF,可以減少潛在的共享地址、數據和函數之間的字符串;直白說就是可以減少代碼量ROM的大小(內存RAM不會減少),一般勾選。

Strict ANSI C:標準(嚴格)的ANSI C;即編譯時嚴格按照標準的ANSI C進行檢查。為了養成良好的編程習慣,寫出更具移植性的代碼,建議勾選。

Warnings(建議All Warnings):No Warning:不會有警告提示和輸出;All Warnings:所有警告提示和輸出。建議選All Warnings,很多告警都不是空穴來風,檢查下好點。

C99 Mode(看情況選擇):C99模式,勾選選擇啟用C99標準,如不勾選,則按C89標準來。為了高移植性,不建議勾選。

(9)調試設置配置(Debug)

通過單選 "Use Simulator" 和 "Use XXX" 選擇是用模擬仿真還是在線仿真?

①在線仿真

Use ST-Link Debugger:選擇燒錄器類型,根據自己手頭的燒錄器,選擇對應的品牌

Load Application at Startup:啟動位置設置,從啟動文件開始加載。不勾選時,在進入調試時,不會重新從啟動開始執行,但不勾選時,需要手動添加 .ini 文件,把 .axf 的調試信息放到 Keil 里,不然進入調試時無法打斷點,也無法追蹤到當前程序位置。這點在網上查 “如何不復位進入調試”很多會提到這個勾選項,但很少有提及這個.ini的事情,有也是一帶而過。

Initlalization File:初始化文件,承接上文,只要新建一個XXX.ini文件(文件名隨意),點擊…按鈕,添加該文件,點旁邊的 "Edit" 按鈕,在文件中添加?“LOAD %L INCREMENTAL”?這一句即可。

Run to main():跑進main函數,進入調試后,會在main里停止,相當于是在main的第一行打了第一個斷點。如果不勾選時,一進入調試就全速跑。

Restore Debug Session Settings:復位調試會話設置,使用上一次調試過程對Breakpoints,Watchpoints,Memory Display和Toolbox(如果這些項被選中的話)。

  • Breakpoints:斷點
  • Watch Windows:變量調試窗口
  • Memory Display:查看內存的窗口
  • Toolbox:工具欄
  • System Viewer:系統視圖

Driver DLL: 驅動動態庫文件,后面Parameter是其對應參數。
Dialog DLL:會話框動態庫文件,后面Parameter是其對應參數。

Parameter 均為:-pSTM32F103ZE,用于設置支持 STM32F103ZE 的軟硬件仿真(即可以通過 Peripherals 選擇對應外設的對話框觀察仿真結果)。最后點擊 OK,完成設置。
這些是仿真的時候需要用到的動態庫,一般不用修改,使用默認值就行,這些動態庫在Keil的安裝路徑下了可以找得到。

點擊進入Settings——Trace追蹤選項欄:

Core Clock:核心時鐘頻率。設置跟當前板子相同的時鐘頻率,可以在調試時按實際運行時間進行追蹤調試。或者在設置晶振頻率處 Xtal(MHz)輸入與開發板上的晶振相同的頻率。否則調試的時間是不對的。

Flash Download下載選項欄:

1.下載動作設置(Download Function)

Erase Full Chip:擦除整片
Erase Sectors:擦除部分
Do not Erase:不擦除
????????勾選Erase Full Chip時,每次下載時,都會對整片Flash進行擦除操作。勾選Erase Sectors時,下載時只會擦除使用到的扇區。勾選Do not Erase時,則下載時不擦除原本代碼。
Program:燒錄
Verify:校驗
Reset and Run:復位并運行
????????勾選Program時,下載時才會把代碼寫入Flash,否則不寫入。勾選Verify時,則在燒錄代碼后,對代碼進行校驗。某些場合下不能檢驗,比如代碼段跟數據段分開下載,代碼里不包含數據部分,而工程里配置的代碼段又包含數據段時,此時如果進行校驗,可能會因為數據內容不一致導致校驗失敗。勾選Reset and Run時,則在下載完成后立即復位運行代碼,不勾選時則需要手動復位運行。

2.燒錄算法(RAM for Algorithm)

????????RAM for Algorithm:給燒錄算法的 RAM 空間,Start 和 Size 分別設置對應 Ram 空間的起始地址和大小,這個一般選擇完芯片后按默認就行,不用修改,如果有需要直接燒寫的片外Flash的,可能需要自己寫燒寫算法的,此時就需要關注這個Ram空間是否容得下自己編寫的燒錄算法大小,需要做適當的調整。?

3.Programming Algorithm

????????Programming Algorithm:燒錄算法選擇,一般選擇完芯片后,這里都會自動選擇對應的燒錄算法,如果不顯示則需要手動添加,不然會導致燒錄失敗。如果是使用國產芯片,也需要手動添加燒錄算法。添加方式很簡單,把對應的算法文件(后綴是FLM)放到Keil安裝根目錄Keil_v5/ARM/Flash路徑下,點Add按鈕,選擇對應的文件即可。

????????如果選擇好芯片型號,這里自動會更新與之相匹配的燒錄算法,比如芯片選擇STM32F103ZET6這里有512k的選擇,若是選擇STM32F103C8T6這里會有128K的選擇,該文件是在Keil安裝目錄底下找不到的,都在芯片包里。

②離線仿真

????????基本設置跟在線是一樣的,多了一個 "Limit Speed to Real-Time" 的選項,意思是把速度限制到實際時間。但Keil怎么知道實際速度是怎么樣的呢?所以這里還需要設置一個運行頻率,即前文說到,在 Target 里有個頻率設置。勾選此選項后,在離線仿真時,代碼執行速度就是按設定的運行頻率來跑,接近實際板子的速度。如果不勾選,那就直接起飛了(按電腦頻率來跑,有多快跑多快)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167360.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167360.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167360.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

插入排序(形象類比)

最近在看riscv手冊的時候,里面有一段代碼是插入排序,但是單看代碼的時候有點迷,沒看懂咋操作的,后來又查資料復習了一下,最終才把代碼看明白,所以寫篇博客記錄一下。 插入排序像打撲克牌 這是我聽到過比較形…

list的總結

目錄 1.什么是list 1.1list 的優勢和劣勢 優勢: 劣勢: 2.構造函數 2.1 default (1) 2.2 fill (2) 2.3 range (3) 2.4 copy (4) 3.list iterator的使用 3.1. begin() 3.2. end() 3.3迭代器遍歷 4. list容量函數 4.1. empty() 4.2. siz…

語音合成綜述Speech Synthesis

一、語音合成概述 語音信號的產生分為兩個階段,信息編碼和生理控制。首先在大腦中出現某種想要表達的想法,然后由大腦將其編碼為具體的語言文字序列,及語音中可能存在的強調、重讀等韻律信息。經過語言的組織,大腦通過控制發音器…

正整數分解

題目編號&#xff1a;Exp08-Basic01&#xff0c;GJBook3-12-05 題目名稱&#xff1a;正整數分解 題目描述&#xff1a;正整數n&#xff0c;按第一項遞減的順序依次輸出其和等于n的所有不增的正整數和式。 輸入&#xff1a;一個正整數n&#xff08;0<n≤15&#xff09;。 …

qRT-PCR相對定量計算詳解qPCR相對定量計算方式——2^-(??Ct) deta t

做完轉錄組分析之后&#xff0c;一般都要求做qRT-PCR來驗證二代測序得到的轉錄本表達是否可靠。熒光定量PCR是一種相對表達定量的方法&#xff0c;他的計算方法有很多&#xff0c;常用的相對定量數據分析方法有雙標曲線法&#xff0c;ΔCt法&#xff0c;2^-ΔΔCt法(Livak法)&a…

順序表基本操作全面解析

文章目錄 1.線性表2.順序表分類2.1 靜態順序表2.2 動態順序表 3. 順序表各接口實現1. 定義結構體(Seqlist)2. 結構體初始化(SLInit)3.檢查容量 (SLCheckCapacity)4.打印數據 (SLPrintf)5.插入操作5.1 從數據頭部插入(SLPushFront)5.2 從數據尾部插入(SLPushBack)5.3 從任意下標…

100天精通Python(可視化篇)——第106天:Pyecharts繪制多種炫酷桑基圖參數說明+代碼實戰

文章目錄 專欄導讀一、桑基圖介紹1. 桑基圖是什么?2. 桑基圖應用場景?二、桑基圖配置選項1. 導包2. add函數3. 分層設置三、桑基圖基礎1. 普通桑基圖2. 修改標簽位置3. 修改節點布局方向4、月度開支桑基圖書籍推薦專欄導讀 ????本文已收錄于《100天精通Python從入門到就…

線性表之順序表

文章目錄 主要內容一.順序表1.插入操作&#xff1a;代碼如下&#xff08;示例&#xff09;: 2.刪除操作&#xff1a;代碼如下&#xff08;示例&#xff09;: 3.按值查找&#xff1a;代碼如下&#xff08;示例&#xff09;: 總結 主要內容 順序表 預備知識 定義&#xff1a; 線…

GEE:基于 Landst 遙感數據計算的 kNDVI 下載 APP

作者&#xff1a;CSDN _養樂多_ 本文記錄了在Google Earth Engine&#xff08;GEE&#xff09;平臺中&#xff0c;使用 Landsat 遙感數據計算并且下載 kNDVI 的應用 APP 鏈接&#xff0c;并介紹該 APP 的使用方法和步驟。該APP可以為用戶展示 NDVI 和 kNDVI 的遙感影像&#…

抽象類, 接口, Object類 ---java

目錄 一. 抽象類 1.1 抽象類概念 1.2 抽象類語法 1.3 抽象類特性 1.4 抽象類的作用 二. 接口 2.1 接口的概念 2.2 語法規則 2.3 接口的使用 2.4 接口間的繼承 2.5 抽象類和接口的區別 三. Object類 3.1 toString() 方法 3.2 對象比較equals()方法 3.3 hash…

免費獲取GPT-4的五種工具

不可否認&#xff0c;由OpenAI帶來的GPT-4已是全球最受歡迎的、功能最強大的大語言模型&#xff08;LLM&#xff09;之一。大多數人都需要使用ChatGPT Plus的訂閱服務去訪問GPT-4。為此&#xff0c;他們通常需要每月支付20美元。那么問題來了&#xff0c;如果您不想每月有這筆支…

基于JavaWeb+SpringBoot+Vue醫院管理系統小程序的設計和實現

基于JavaWebSpringBootVue醫院管理系統小程序的設計和實現 源碼獲取入口Lun文目錄前言主要技術系統設計功能截圖訂閱經典源碼專欄[Java 源碼獲取 源碼獲取入口 Lun文目錄 目錄 1系統概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系統設計思想 1 2相關技術 2 2.1微信小程序 2 2.2 …

井蓋位移傳感器廠家批發,守護井蓋安全

窨井蓋廣泛分布于城市街道&#xff0c;其管理效果直接反映了城市治理的現代化程度。根據住房和城鄉建設部發布的《關于進一步加強城市窨井蓋安全管理的通知》&#xff0c;全國各地需加強窨井蓋的安全管理。作為市政基礎設施的一個重要的組成部分&#xff0c;井蓋的管理工作不僅…

去水印網站哪個好?試試這個去水印軟件!

在工作中&#xff0c;我們都曾遇到過圖片水印的困擾。在眾多的在線水印去除工具中&#xff0c;雖然選擇看似豐富&#xff0c;但往往很難找到完全滿足我們需求的那一個。有些工具操作過程繁復&#xff0c;有些工具在處理復雜水印時力不從心&#xff0c;還有些工具在去水印的過程…

【Spring日志】

一.日志作用 1.定位和發現問題 這是日志的主要用途,通過查看日志,我們可以定位問題發生的位置,從而快速的發現問題,分析問題. 2.系統監控 監控幾乎是一個成熟系統的標配,我們可以通過日志記錄這個系統的運行狀態,比如記錄方法的響應時間,響應狀態,通過設置不同的規則,超過閾值就…

【MyBatis <if> <where>標簽介紹】

文章目錄 <if>標簽<where>標簽<foreach>標簽 <if>標簽 <if>標簽允許我們在SQL語句中添加條件判斷。 <if test"condition"><!-- 當條件滿足時執行的SQL語句 --> </if>其中&#xff0c;test屬性是一個表達式&#x…

葡萄酒按酒體如何分類,都有什么特點?

葡萄酒的酒體是指酒液在口腔中的飽滿度和分量感&#xff0c;品酒者常用“輕盈”“厚重”“適中”等詞匯來形容。所以&#xff0c;云倉酒莊的品牌雷盛紅酒分享在葡萄酒分類中還有一個類型&#xff0c;就是按照酒體進行分類。一般分為輕盈型、中等型、飽滿型。 輕盈型&#xff1…

海外https代理ip如何保障信息安全?該怎么選擇?

海外https代理ip是指通信協議為https的海外真實網絡地址ip&#xff0c;通常應用在各種跨境業務中。 一、什么是HTTPS協議 HTTP協議是一個應用層協議&#xff0c;通常運行在TCP協議之上。它是一個明文協議&#xff0c;客戶端發起請求&#xff0c;服務端給出響應的響應。由于網…

表單郵箱密碼登錄 原生+Jquery實現

文章目錄 效果代碼郵箱驗證正則表達式HTMLCSS JS 效果 正確密碼為&#xff1a;123456 點擊登錄按鈕校驗。 代碼 表單校驗 - CodeSandbox 郵箱驗證正則表達式 /(?:[a-z0-9!#$%&*/?^_{|}~-](?:\.[a-z0-9!#$%&*/?^_{|}~-])*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1…

Excel表中合并兩個Sheet的方法?

按AltF11&#xff0c;調出Visual Basic 界面。 在左側窗口中&#xff0c;右鍵選擇“插入”—“模塊”&#xff1a; 將如下代碼粘貼進去&#xff0c;點擊運行按鈕&#xff0c;完成數據表合并。 Sub MergeAllSheetsInThisWorkbook() On Error Resume Next Application.ScreenU…