一、IAR 的基本使用教程
1. IAR 顏色字體大小設置
- 打開設置路徑:點擊頂部菜單欄?Tools?→ 選擇?Options,打開 IDE 配置窗口。
- 進入字體顏色設置界面:在彈出的 “IDE Options” 窗口中,雙擊展開?Editor?選項,然后點擊?Colors and Fonts。
- 字體基礎設置:
- 字體選擇:推薦使用?Consolas?或?幼圓(代碼顯示清晰,支持等寬格式)。
- 字體大小:建議設置為?12 號(兼顧顯示范圍與可讀性,可根據屏幕分辨率調整)。
- 默認字體初始狀態:默認字體為 Courier New,大小為 9 號,需手動修改。
- 語法顏色配置(單片機開發推薦方案):
語法元素(Syntax Element) 顏色(Color) 字體樣式(Style) C Keyword(C 語言關鍵字) 藍色(blue) 加粗(Bold) Strings(字符串) 深紅色(Dark Red) 正常(Normal) Char(字符) 藍色(blue) 正常(Normal) Preprocessor(預處理指令) 藍色(blue) 正常(Normal) Number(數字) 紅色(Red) 正常(Normal) C++ comment/Comment(注釋) 綠色(Green) 斜體(Italic) 其他元素 默認 默認 - 保存設置:配置完成后,點擊?確定?保存修改,返回編輯界面即可生效。
2. 其他設置(行號、文件編碼)
- 打開設置路徑:同樣通過?Tools?→?Options?進入 IDE 配置窗口。
- 行號與編輯輔助設置:
- 在 “IDE Options” 窗口中,直接選擇?Editor?選項卡,找到以下配置項并勾選 / 設置:
- Show line numbers:勾選,顯示代碼行號(便于定位代碼位置,排查報錯)。
- Tab size:設置為?2?或?8(推薦 2,減少縮進占用空間,代碼結構更緊湊)。
- Auto indent:勾選,開啟自動縮進(輸入代碼時自動對齊,符合編碼規范)。
- Show right margin:勾選,顯示右邊界線(默認列數為 80,避免代碼行過長,符合代碼規范)。
- Remove trailing blanks:可選勾選,自動刪除行尾多余空格(保持代碼整潔)。
- 在 “IDE Options” 窗口中,直接選擇?Editor?選項卡,找到以下配置項并勾選 / 設置:
- 文件編碼設置:
- 在?Editor?選項卡下,找到?File Encoding?區域。
- 編碼格式:選擇?UTF-8(支持中文注釋,避免亂碼)。
- 換行符(EOL characters):選擇?PC(適配 Windows 系統,兼容大多數開發環境)。
- 自動檢測編碼:勾選?Auto-detect character encoding,適配不同來源的文件。
- 保存設置:點擊?確定?保存,所有配置即時生效。
3. 新建用戶源文件和頭文件模塊并添加到工程
(1)新建文件
- 新建文檔:
- 方式 1:點擊頂部菜單欄?File?→?New File(或使用快捷鍵?Ctrl+N)。
- 方式 2:直接點擊工具欄中 “New File” 圖標(文檔 + 加號樣式)。
- 保存文件(需區分源文件與頭文件):
- 源文件(.c):使用快捷鍵?Ctrl+S?保存,命名格式為 “模塊名.c”(示例:modename1.c),保存類型選擇 “IDE Files (.c;.cpp;*.cc...)”。
- 頭文件(.h):重復新建文件步驟,保存時命名格式為 “模塊名.h”(示例:modename1.h),保存類型同上。
- 保存路徑:建議統一放在工程目錄下(如 C:\work_now),便于工程管理。
(2)添加文件到工程
- 選中工程目錄:在左側 “Workspace” 窗口中,找到目標工程(示例:TEST)下的 “Source Files” 或空白區域。
- 添加.c 文件:右鍵點擊空白處 → 選擇?Add?→?Add Files,在彈出的文件選擇窗口中,選中已保存的.c 文件(如 modename1.c),點擊?打開?即可添加(頭文件無需手動添加,通過.c 文件中的
#include
指令引用即可)。
(3)示例代碼
- modename1.c(源文件,實現加減乘除功能):
c
運行
#include "modename1.h"// 加法函數
float add(float a, float b)
{return (a + b);
}// 減法函數
float sub(float a, float b)
{return (a - b);
}// 乘法函數
float mul(float a, float b)
{return (a * b);
}// 除法函數
float div(float a, float b)
{return (a / b);
}
- modename1.h(頭文件,聲明函數接口):
c
運行
#ifndef _MODENAME1_H_
#define _MODENAME1_H_// 加法函數聲明(計算兩個數的和)
float add(float a, float b);
// 減法函數聲明(計算兩個數的差)
float sub(float a, float b);
// 乘法函數聲明(計算兩個數的乘積)
float mul(float a, float b);
// 除法函數聲明(計算兩個數相除的商)
float div(float a, float b);#endif
- main.c(主函數文件,調用功能模塊):
c
運行
#include <stdio.h>
#include "modename1.h"int main()
{float c = 0;// 調用加法函數并打印結果c = add(2, 5);printf("add:%f", c);// 調用減法函數并打印結果c = sub(2, 5);printf("sub:%f", c);// 調用乘法函數并打印結果c = mul(2, 5);printf("mul:%f", c);// 調用除法函數并打印結果c = div(2, 5);printf("div:%f", c);return 0;
}
4. 編譯輸出可執行文件
- 編譯操作:在工程界面中,點擊頂部工具欄的?Build?按鈕(或使用快捷鍵,不同版本可能不同,默認通常為 F7),開始編譯工程。
- 編譯結果檢查:
- 成功標志:編譯完成后,在底部 “Messages” 窗口中顯示?Done. 0 error(s), 0 warning(s),表示無錯誤、無警告,編譯通過。
- 失敗處理:若出現錯誤(error)或警告(warning),需根據提示定位代碼問題(如語法錯誤、頭文件未引用等),修改后重新編譯。
- 生成可執行文件:編譯通過后,工程會在 “Output” 目錄下生成可執行文件(示例:TEST.out),用于后續調試或下載到硬件。
5. 軟件仿真單步調試
(1)選擇調試方式
- 打開調試配置:右鍵點擊左側工程目錄空白處 → 選擇?Options,進入工程選項窗口。
- 配置調試驅動:
- 在 “Options for node 'TEST'” 窗口中,選擇?Debugger?選項卡。
- 驅動選擇(Driver):
- 軟件仿真(C 語言學習 / 無硬件時):選擇?Simulator(無需硬件,直接在 IDE 中模擬運行)。
- 硬件調試(STM32 開發時):選擇?ST-Link(需連接 ST-Link 調試器與單片機硬件)。
- 保存配置:點擊?OK?保存調試方式設置。
(2)啟動調試與調試操作
- 啟動調試:點擊頂部工具欄的?Download and Debug?按鈕(綠色類似播放鍵圖標,或使用快捷鍵?Ctrl+D),加載可執行文件并進入調試模式。
- 調試工具欄圖標功能(核心操作):
圖標功能 作用描述 單步運行(Step Over) 執行下一步代碼,若語句包含函數,不進入函數內部(整體執行函數,適合快速跳轉)。 單步進入(Step Into) 執行下一步代碼,若語句包含函數,進入函數內部逐行執行(適合排查函數內問題)。 單步跳出(Step Out) 從當前函數內部跳出,回到函數調用處(函數調試完成后快速返回上層代碼)。 全速運行(Go) 從當前位置全速執行代碼,若遇到斷點則暫停(適合快速定位到目標代碼段)。 運行到光標處(Run to Cursor) 從當前位置執行到光標所在行,無需手動設置斷點(臨時定位高效)。 重新調試(Restart Debug) 重新加載可執行文件,恢復到調試初始狀態(修改代碼后需重新調試時使用)。 退出調試(Stop Debug) 結束調試模式,返回正常編輯界面。 - 斷點使用:在代碼行號左側空白處左鍵單擊,會出現紅色圓點(斷點標記),代碼執行到斷點處會自動暫停,便于觀察變量值與程序流程。
6. 自帶終端打印
- 調出終端窗口:進入調試模式后,點擊頂部菜單欄?View?→ 選擇?Terminal I/O,打開終端打印窗口(用于查看
printf
函數輸出內容)。 - 終端打印配置:
- 緩沖區大小(Buffer size):默認設置為 0(實時打印,無延遲)。
- 控制碼(Ctrl codes):默認無需修改,保持默認配置即可。
- 查看打印結果:
- 在代碼中合適位置設置斷點(如
return 0;
前一行),避免程序提前結束。 - 點擊?全速運行?按鈕,程序執行到斷點處暫停,
printf
輸出的內容(如add:7.000000
、sub:-3.000000
等)會顯示在 “Terminal I/O” 窗口的 “Output” 區域。
- 在代碼中合適位置設置斷點(如
- 輔助調試窗口:調試時可同時打開以下窗口,輔助排查問題:
- Watch:添加指定變量,實時查看變量值變化(如查看
c
的計算結果)。 - Memory:查看內存地址對應的數值(底層硬件調試時常用)。
- Call Stack:查看函數調用層級關系(排查函數調用順序與嵌套問題)。
- Watch:添加指定變量,實時查看變量值變化(如查看
IAR 使用調試詳解
文章標簽:# 嵌入式 #IAR
一、IAR 功能介紹
1.1 File 文件菜單
文件菜單包含文件 / 工作空間的基礎操作,編輯與調試模式下功能完全一致,核心操作及快捷鍵如下:
功能選項 | 快捷鍵 | 說明 |
---|---|---|
New | Ctrl + N | 新建文件或工作空間 |
Open | Ctrl + O | 打開已有的文件或工作空間 |
Close | - | 關閉當前打開的文件 |
Save Workspace | - | 保存當前工作空間配置 |
Save Workspace As... | - | 將工作空間另存為新文件(自定義路徑和名稱) |
Close Workspace | - | 關閉當前工作空間(不關閉軟件) |
Save | Ctrl + S | 保存當前編輯的文件 |
Save As... | - | 將當前文件另存為新文件(修改文件名或路徑) |
Save All | - | 保存所有已打開的文件和工作空間 |
Page Setup... | - | 配置打印頁面(紙張大小、邊距等) |
Ctrl + P | 打印當前文件 | |
Recent Files | - | 查看最近打開過的文件列表(快速重新打開) |
Recent Workspaces | - | 查看最近打開過的工作空間列表 |
Exit | - | 退出 IAR 軟件 |
1.2 Edit 編輯菜單
編輯菜單主要用于代碼編輯輔助操作,編輯與調試模式下功能一致,高頻操作及快捷鍵如下:
功能選項 | 快捷鍵 | 說明 |
---|---|---|
Undo | Ctrl + Z | 撤銷上一步編輯操作 |
Redo | Ctrl + Y | 恢復上一步撤銷的操作 |
Cut | Ctrl + X | 剪切選中的代碼片段 |
Copy | Ctrl + C | 復制選中的代碼片段 |
Paste | Ctrl + V | 粘貼剪切 / 復制的代碼片段 |
Select All | Ctrl + A | 全選當前文件中的所有代碼 |
Find and Replace > Find | Ctrl + F | 查找指定字符或代碼片段 |
Find and Replace > Find Next | F3 | 查找下一個匹配的目標 |
Find and Replace > Find Previous | Shift + F3 | 查找上一個匹配的目標 |
Find and Replace > Replace | Ctrl + H | 替換指定字符或代碼片段 |
Navigate > Go To | Ctrl + G | 跳轉到指定行號或列號(快速定位代碼位置) |
Navigate > Go to Definition | F12 | 跳轉到變量 / 函數的定義處(代碼溯源常用) |
Code Templates > Insert Template | Ctrl + Alt + V | 插入預設代碼模板(如 if、for 循環) |
Code Templates > Edit Templates | - | 編輯或自定義代碼模板(新增常用代碼片段) |
Next Error/Tag | F4 | 跳轉到下一個編譯錯誤或標簽位置 |
Previous Error/Tag | Shift + F4 | 跳轉到上一個編譯錯誤或標簽位置 |
Complete Word | Ctrl + Alt + Space | 補全單詞(輸入部分字符后觸發,提升輸入效率) |
Complete Code | Ctrl + Space | 補全類 / 結構體代碼(自動生成框架) |
Parameter Hint | Ctrl + Shift + Space | 顯示函數參數提示(輸入函數名后觸發,避免參數遺漏) |
Match Brackets | - | 匹配括號(定位成對的{} /() /[] ,排查語法錯誤) |
Toggle All Folds | Ctrl + Alt + F | 折疊 / 展開所有代碼塊(快速查看代碼結構) |
Auto Indent | Ctrl + T | 自動縮進代碼(統一代碼格式,避免凌亂) |
Block Comment | Ctrl + K | 批量注釋選中代碼(添加/* */ 或// ) |
Block Uncomment | Ctrl + Shift + K | 取消批量注釋(移除選中代碼的注釋標記) |
Toggle Breakpoint | F9 | 添加 / 取消斷點(調試時暫停代碼執行的位置) |
Enable/Disable Breakpoint | Ctrl + F9 | 啟用 / 禁用斷點(保留斷點位置,暫時不生效) |
1.3 View 視圖菜單
視圖菜單用于打開 / 關閉各類功能窗口,編輯模式與調試模式下窗口列表存在差異(調試模式新增調試相關窗口),核心窗口功能如下:
1.3.1 通用窗口(編輯 / 調試模式均有)
窗口名稱 | 說明 |
---|---|
Messages | 顯示編譯信息(Build)、查找結果(Find in Files)、工具輸出(Tool Output)、調試日志(Debug Log) |
Workspace | 顯示工程文件結構(如源文件、頭文件、組文件夾),是工程管理核心窗口 |
Source Browser | 源碼瀏覽器,包含 3 個子窗口: - References:查看變量 / 函數的引用位置 - Declarations:查看變量 / 函數的聲明 - Call Graph:查看函數調用關系圖 |
Breakpoints | 管理所有斷點(查看、啟用 / 禁用、刪除斷點) |
Toolbars > Main | 顯示主工具欄(新建、保存、編譯等按鈕) |
Toolbars > Debug | 顯示調試工具欄(單步、全速運行等按鈕,僅調試模式顯示) |
Status Bar | 顯示當前編輯狀態(行號、列號、編碼格式等) |
1.3.2 調試模式專屬窗口
窗口名稱 | 說明 |
---|---|
Disassembly | 顯示反匯編代碼(查看匯編指令與 C 代碼的對應關系,底層調試常用) |
Memory | 查看內存地址對應的數值(監控變量在內存中的存儲情況) |
Symbolic Memory | 帶符號的內存窗口(用變量名標注內存地址,更直觀) |
Register | 顯示 CPU 寄存器數值(如 R0~R15、PC、PSR 等,硬件調試常用) |
Watch | 手動添加變量 / 表達式,實時查看其數值(支持 Watch1~4 共 4 個窗口同時監控) |
Locals | 自動顯示當前函數的局部變量(無需手動添加,僅顯示局部變量) |
Statics | 自動顯示靜態變量(靜態局部、靜態全局、全局變量) |
Auto | 自動顯示當前代碼行相關的變量 / 表達式(調試暫停時自動加載) |
Live Watch | 實時監控靜態 / 全局變量(變量值實時更新,無需暫停調試) |
Quick Watch | 快速查看單個變量 / 表達式(臨時查看,不保留在窗口中) |
Call Stack | 顯示函數調用堆棧(查看當前代碼所處的函數調用層級,排查調用鏈問題) |
Stack | 顯示堆棧地址范圍(監控堆棧使用情況,避免棧溢出) |
Terminal I/O | 顯示printf 等打印輸出(調試時查看程序運行日志) |
Cores | 顯示多核芯片的內核狀態(僅多核處理器工程可用) |
Code Coverage | 顯示代碼覆蓋率(統計調試過程中執行過的代碼比例,優化測試用例) |
1.4 Project 工程菜單
工程菜單針對工程管理與編譯調試,編輯與調試模式下功能略有差異,核心操作及快捷鍵如下:
功能選項 | 快捷鍵 | 模式 | 說明 |
---|---|---|---|
Add Files... | - | 編輯 | 向工程中添加源文件(.c/.cpp 等)或頭文件(.h) |
Add Group... | - | 編輯 | 在工程中新建組文件夾(分類管理文件,如 App、BSP、CMSIS) |
Import File List... | - | 編輯 | 導入文件列表(批量添加文件,避免逐個選擇) |
Add Project Connection | - | 編輯 | 添加工程鏈接(關聯其他工程文件) |
Edit Configurations... | - | 編輯 | 編輯工程配置(如 Debug/Release 模式切換) |
Remove | - | 編輯 | 從工程中移除文件或組文件夾(不刪除本地文件) |
Create New Project... | - | 編輯 | 新建 IAR 工程 |
Add Existing Project... | - | 編輯 | 向當前工作空間添加已有的 IAR 工程 |
Options... | Alt + F7 | 編輯 / 調試 | 打開工程選項配置(如編譯器、調試器、輸出路徑等,核心配置入口) |
Make | F7 | 編輯 / 調試 | 編譯工程(僅編譯修改過的文件,提升效率) |
Compile | Ctrl + F7 | 編輯 / 調試 | 編譯選中的單個文件或組文件夾(針對性編譯) |
Rebuild All | - | 編輯 / 調試 | 重新編譯所有文件(忽略緩存,確保代碼最新,耗時較長) |
Clean | - | 編輯 / 調試 | 清除編譯生成的中間文件(.obj、.lst 等)和可執行文件(.out) |
Batch Build... | F8 | 編輯 / 調試 | 批量編譯多個工程配置(如同時編譯 Debug 和 Release 模式) |
C-STAT Static Analysis | - | 編輯 / 調試 | 靜態代碼分析(檢查代碼是否符合 MISRA 等規范,排查潛在問題) |
Stop Build | Ctrl + Break | 編輯 / 調試 | 停止當前編譯過程(編譯卡住或誤操作時使用) |
Download and Debug | Ctrl + D | 調試 | 下載程序到目標設備并進入調試模式(需連接硬件或選擇仿真器) |
Debug without Downloading | - | 調試 | 僅進入調試模式(不重新下載程序,適用于已下載過程序的場景) |
Attach to Running Target | - | 調試 | 附加到正在運行的目標設備(實時監控設備狀態,不中斷程序運行) |
Make & Restart Debugger | Ctrl + R | 調試 | 重新編譯工程并重啟調試(修改代碼后快速更新調試內容) |
Restart Debugger | Ctrl + Shift + R | 調試 | 重啟調試模式(不重新編譯,僅重置調試狀態) |
Download | - | 調試 | 僅下載程序到目標設備(不進入調試模式) |
SFR Setup | - | 調試 | 配置特殊功能寄存器(SFR,硬件寄存器調試常用) |
Open Device Description File | - | 調試 | 打開設備描述文件(配置芯片型號相關參數) |
Save List of Registers | - | 調試 | 保存當前寄存器數值列表(用于對比調試前后寄存器狀態) |
1.5 Debug 調試菜單
調試菜單僅在調試模式下顯示,包含核心調試控制操作,高頻功能及快捷鍵如下:
功能選項 | 快捷鍵 | 說明 |
---|---|---|
Go | F5 | 全速運行程序(遇到斷點時暫停,無斷點則一直運行) |
Break | - | 暫停當前正在運行的程序(全速運行時需手動暫停查看狀態) |
Reset | - | 復位目標設備(恢復程序初始狀態,重新開始執行) |
Stop Debugging | Ctrl + Shift + D | 退出調試模式(返回編輯界面) |
Step Over | F10 | 逐行調試(遇到函數調用時不進入函數內部,整體執行函數) |
Step Into | F11 | 逐行調試(遇到函數調用時進入函數內部,逐行執行函數代碼) |
Step Out | Shift + F11 | 從當前函數內部跳出(執行完剩余函數代碼,返回函數調用處) |
Next Statement | - | 運行到下一條語句(忽略空行和注釋,直接定位到有效代碼) |
Run to Cursor | - | 運行到光標所在行(無需手動設置斷點,臨時定位高效) |
Autostep... | - | 自動步進調試(設置步進間隔時間,自動執行代碼,觀察實時變化) |
Set Next Statement | - | 設置下一條執行語句(強制修改程序執行流程,僅調試時臨時生效) |
C++ Exceptions | - | 配置 C++ 異常處理(僅 C++ 工程可用,監控異常拋出和捕獲) |
Memory | - | 保存 / 復位內存數據(備份內存狀態或恢復初始內存值) |
Refresh | - | 刷新調試窗口數據(同步最新的變量、寄存器、內存狀態) |
Logging | - | 開啟調試日志(記錄調試過程中的操作和數據變化,便于回溯問題) |
1.6 Disassembly 反匯編菜單
反匯編菜單用于配置反匯編代碼的顯示模式,共 4 種模式,默認選擇自動模式即可滿足大部分需求:
模式選項 | 說明 |
---|---|
Disassemble in Thumb mode | 強制以 Thumb 指令集顯示反匯編(適用于 Thumb 架構芯片) |
Disassemble in ARM mode | 強制以 ARM 指令集顯示反匯編(適用于 ARM 架構芯片) |
Disassemble in Current processor mode | 以當前 CPU 運行模式顯示反匯編(跟隨芯片實時模式切換,精準度高) |
Disassemble in Auto mode | 自動識別指令集并顯示反匯編(默認模式,無需手動切換架構) |
1.7 Simulator 下載調試工具菜單
該菜單名稱隨工程配置的調試工具變化(如選擇 ST-Link 時顯示 “ST-Link”,選擇 J-Link 時顯示 “J-Link”),核心功能為調試工具的專屬配置,使用頻率較低:
功能選項 | 說明 |
---|---|
Memory Configuration... | 配置仿真內存(僅 Simulator 模式可用,設置內存大小和地址范圍) |
Simulated Frequency... | 設置仿真頻率(僅 Simulator 模式可用,模擬芯片運行頻率) |
Trace | 開啟跟蹤功能(記錄程序執行軌跡,排查復雜流程問題) |
Function Trace | 跟蹤函數調用(記錄函數進入和退出時間,分析函數執行效率) |
Function Profiler | 函數性能分析(統計函數執行時間和調用次數,優化性能瓶頸) |
Data Log | 數據日志(記錄變量或內存值的變化歷史,回溯數據變化過程) |
Interrupt Log | 中斷日志(記錄中斷觸發和處理情況,排查中斷相關問題) |
Interrupt Setup... | 配置中斷(手動觸發中斷或設置中斷優先級,調試中斷邏輯) |
Forced Interrupt | 強制觸發中斷(調試中斷服務函數時使用) |
Breakpoint Usage | 查看斷點使用情況(監控斷點是否生效,避免斷點沖突) |
1.8 Tools 工具菜單
工具菜單用于配置 IAR 的編輯環境和輔助工具,核心功能如下:
功能選項 | 說明 |
---|---|
Options... | 打開 IDE 全局配置(核心功能,包含字體、顏色、快捷鍵、編碼等設置) |
Filename Extensions.. | 配置文件擴展名(關聯自定義文件類型,讓 IAR 識別并支持編輯) |
Configure Viewers... | 配置文件預覽器(設置不同文件類型的預覽方式,如預覽圖片、文檔) |
Configure Custom Argument Variables... | 配置自定義參數變量(設置工程編譯時的全局變量,如路徑、版本號) |
Configure Tools... | 配置外部工具(關聯第三方工具,如代碼格式化工具、燒錄工具) |
Project Converter | 工程轉換器(將 Keil 工程轉換為 IAR 工程,跨工具開發時實用) |
關鍵配置:Options(IDE 全局配置)
在Tools > Options
中可配置以下高頻選項:
- Common Fonts:設置全局字體(如菜單、工具欄字體)。
- Editor:配置代碼編輯相關:
- 縮進(Tab size/Indent size):推薦設置為 2 或 4,統一代碼格式。
- 編碼(File Encoding):選擇 UTF-8,支持中文注釋無亂碼。
- 行號(Show line numbers):勾選,便于定位代碼。
- 自動縮進(Auto indent):勾選,輸入代碼時自動對齊。
- Key Bindings:自定義快捷鍵(修改默認快捷鍵以適配個人習慣)。
- Debugger:配置默認調試器(如默認選擇 Simulator 或 ST-Link)。
1.9 Window 窗口菜單
窗口菜單用于管理編輯窗口(與 View 菜單的 “功能窗口” 區分,僅針對代碼編輯窗口),核心功能如下:
功能選項 | 快捷鍵 | 說明 |
---|---|---|
Close Tab | Ctrl + F4 | 關閉當前編輯窗口(僅關閉選中的單個文件標簽) |
Close Window | - | 關閉所有編輯窗口(關閉當前打開的所有文件標簽) |
Split | - | 拆分當前編輯窗口(將一個窗口拆分為上下 / 左右兩個,同時查看同一文件不同位置) |
New Vertical Editor Window | - | 新建垂直編輯窗口(左右分欄,打開新窗口顯示當前文件) |
New Horizontal Editor Window | - | 新建水平編輯窗口(上下分欄,打開新窗口顯示當前文件) |
Move Tabs to Next Window | - | 將當前標簽移動到下一個窗口(多窗口管理時調整標簽位置) |
Move Tabs to Previous Window | - | 將當前標簽移動到上一個窗口 |
Close All Tabs Except Active | - | 關閉除當前活躍標簽外的所有標簽(僅保留正在編輯的文件) |
Close All Tabs to the Right of Active | - | 關閉當前活躍標簽右側的所有標簽(整理標簽順序) |
Close All Editor Tabs | - | 關閉所有編輯標簽(同 Close Window) |
1.10 Help 幫助菜單
幫助菜單提供 IAR 的官方文檔和輔助工具,是學習和排查問題的重要入口:
功能選項 | 說明 |
---|---|
Content... | 打開幫助文檔目錄(按分類查看 IAR 各模塊的使用說明) |
Index... | 打開幫助文檔索引(按關鍵詞搜索文檔內容) |
Search... | 搜索幫助文檔(輸入關鍵詞查找相關知識點) |
Product updates | 檢查軟件更新(獲取 IAR 最新版本和補丁) |
Release Notes | 查看版本更新日志(了解各版本新增功能和修復的問題) |
Getting Started with IAR Embedded Workbench | 新手入門指南(適合零基礎用戶學習基本操作) |
IDE Project Management and Building Guide | 工程管理與編譯指南(詳細講解工程配置和編譯流程) |
C/C++ Development Guide | C/C++ 開發指南(講解代碼編輯、編譯優化等 C/C++ 相關功能) |
C-SPY Debugging Guide | C-SPY 調試指南(詳細講解調試功能的使用方法) |
License Manager... | 許可證管理(激活或更新 IAR 許可證) |
About | 查看軟件版本信息(如 IAR 版本號、安裝路徑等) |
二、IAR 設置
2.1 插入 / 編輯模板
當需要頻繁使用相同代碼片段(如函數框架、循環結構)時,可通過模板功能提升效率,操作步驟如下:
- 插入模板:在代碼編輯界面,點擊?
Edit > Code Templates > Insert Template
(快捷鍵 Ctrl + Alt + V),選擇預設模板(如 if、for),IAR 會自動插入模板代碼。 - 編輯 / 新增模板:
- 點擊?
Edit > Code Templates > Edit Templates
,打開模板編輯窗口。 - 參考默認模板語法(如
#if ${condition}\n{\n ${cursor}\n}\n#endif
),新增自定義模板(如 while 循環、函數框架)。 - 保存后,新增模板會出現在 “Insert Template” 列表中,可直接調用。
- 點擊?
示例:新增 while 循環模板
模板代碼:
c
運行
while(${condition})
{${cursor} // 光標默認定位此處,便于直接輸入代碼
}
2.2 完型語句
完型語句功能可自動補全代碼(輸入部分字符后觸發),提升輸入效率,使用方式如下:
- 單詞補全(Complete Word):輸入變量 / 函數名的前幾個字符(如輸入 “USA”),按下快捷鍵?Ctrl + Alt + Space,IAR 會自動補全匹配的單詞(如 “USART_Initializes”)。
- 代碼補全(Complete Code):輸入代碼關鍵字(如 “wh”),按下快捷鍵?Ctrl + Space,IAR 會顯示匹配的代碼模板(如 while 循環),選擇后自動生成完整代碼框架。
- 參數提示(Parameter Hint):輸入函數名后(如 “printf”),按下快捷鍵?Ctrl + Shift + Space,IAR 會顯示函數的參數列表(如
int printf(const char *format, ...)
),避免參數遺漏。
2.3 自動縮進
當代碼格式凌亂(縮進不一致)時,可通過自動縮進功能統一格式,操作方式:
- 選中需要整理的代碼片段(或全選文件)。
- 按下快捷鍵?Ctrl + T(或點擊?
Edit > Auto Indent
),IAR 會根據代碼語法(如{}
、if
、for
)自動調整縮進,使代碼結構整齊。
示例:凌亂代碼整理前:
c
運行
int main(void)
{
while(1)
{
LED_TOGGLE;
printf("Demo..");
}
}
整理后(自動縮進后):
c
運行
int main(void)
{while(1){LED_TOGGLE;printf("Demo..");}
}
三、編譯和調試
3.1 編譯
編譯是將源代碼轉換為可執行文件的過程,IAR 提供兩種核心編譯方式:
編譯方式 | 快捷鍵 | 適用場景 |
---|---|---|
單獨編譯(Compile) | Ctrl + F7 | 僅編譯選中的單個文件或組文件夾(修改少量文件后,快速驗證語法錯誤) |
全局編譯(Make) | F7 | 編譯整個工程(僅編譯修改過的文件,未修改文件復用緩存,提升效率) |
重新編譯(Rebuild All) | - | 編譯所有文件(忽略緩存,確保代碼完全更新,適用于修改工程配置后) |
編譯結果查看:編譯完成后,通過底部 “Messages> Build” 窗口查看結果:
- 成功:顯示?
Done. 0 error(s), 0 warning(s)
(無錯誤無警告)。 - 失敗:顯示錯誤(Error)或警告(Warning)的文件、行號和原因,需根據提示修改代碼后重新編譯。
3.2 不同仿真調試器差異
IAR 支持多種調試器(Simulator、ST-Link、J-Link 等),不同調試器對應的菜單和功能存在差異,核心區別如下:
調試器類型 | 菜單顯示名稱 | 核心特點 | 適用場景 |
---|---|---|---|
軟件仿真(Simulator) | Simulator | 無需硬件,純軟件模擬芯片運行;支持內存、寄存器監控;不支持實際硬件交互。 | C 語言語法調試、算法驗證(無硬件或硬件未就緒時) |
ST-Link | ST-Link | 需連接 ST-Link 硬件調試器和 STM32 芯片;支持程序下載和實時硬件調試;性價比高。 | STM32 芯片開發(官方推薦,兼容性好) |
J-Link | J-Link | 需連接 J-Link 硬件調試器;支持多品牌芯片(如 STM32、NXP);調試功能豐富。 | 多平臺芯片開發(需兼容不同品牌芯片時) |
其他調試器(如 I-jet) | 對應名稱 | 功能更強大(如支持 Trace 跟蹤);價格較高;適用于高端芯片調試。 | 復雜硬件調試(如多核芯片、實時操作系統調試) |
3.3 調試
調試的核心是監控程序運行狀態、定位問題,步驟如下:
- 配置調試器:
- 右鍵工程空白處 →?
Options
(Alt + F7) →?Debugger
?→ 選擇調試器(如 Simulator 或 ST-Link) → 點擊 “OK” 保存。
- 右鍵工程空白處 →?
- 啟動調試:
- 點擊?
Project > Download and Debug
(快捷鍵 Ctrl + D),IAR 會下載程序到目標設備(或加載仿真環境)并進入調試模式。
- 點擊?
- 調試控制:
- 單步調試:使用 F10(Step Over,不進函數)或 F11(Step Into,進函數)逐行執行代碼。
- 全速運行:按下 F5(Go),程序遇到斷點時暫停,無斷點則持續運行。
- 暫停 / 復位:點擊 “Break” 暫停程序,點擊 “Reset” 復位程序到初始狀態。
- 退出調試:按下?
Ctrl + Shift + D
(Stop Debugging),返回編輯模式。
調試窗口配合使用:
- 查看變量:通過 Watch、Locals、Statics 窗口監控變量值變化。
- 查看內存:通過 Memory 窗口查看變量在內存中的存儲情況。
- 查看調用鏈:通過 Call Stack 窗口查看函數調用層級。
- 查看打印:通過 Terminal I/O 窗口查看
printf
輸出的日志。
3.4 仿真進行調試
以軟件仿真(Simulator)為例,完整調試流程如下:
- 配置仿真器:工程選項中選擇 “Simulator” 調試器(參考 3.3 步驟 1)。
- 添加斷點:在需要暫停的代碼行號左側單擊,添加紅色斷點(快捷鍵 F9),如在
main
函數的while(1)
行添加斷點。 - 啟動調試:按下 Ctrl + D,進入調試模式,程序會暫停在第一個斷點處。
- 逐行調試:
- 按下 F10(Step Over),執行當前行代碼,觀察 Locals 窗口中局部變量的變化(如
LED_TOGGLE
執行后,相關變量值是否改變)。 - 若遇到函數調用(如
printf
),按下 F11(Step Into)可進入函數內部,查看函數執行細節;按下 Shift + F11(Step Out)可跳出函數。
- 按下 F10(Step Over),執行當前行代碼,觀察 Locals 窗口中局部變量的變化(如
- 全速運行:按下 F5(Go),程序會運行到下一個斷點處暫停,或持續運行(無其他斷點時)。
- 查看結果:通過 Terminal I/O 窗口查看
printf
輸出的日志,驗證程序邏輯是否正確。
3.5 調試窗口介紹
調試模式下的核心窗口(如 Watch、Locals、Memory 等)功能已在 1.3.2 節介紹,此處重點說明變量查看窗口的差異和數據格式設置:
3.5.1 變量查看窗口對比
窗口名稱 | 數據來源 | 手動添加需求 | 適用場景 |
---|---|---|---|
Watch | 自定義變量 / 表達式(全局、局部、靜態均可) | 需要 | 長期監控特定變量(如循環計數器、關鍵參數) |
Live Watch | 靜態 / 全局變量 | 需要 | 實時監控變量(無需暫停調試,如實時采集的傳感器數據) |
Quick Watch | 臨時變量 / 表達式 | 需要 | 臨時查看單個變量(調試過程中偶發查看,不保留窗口) |
Auto | 當前代碼行相關的變量 / 表達式(自動識別) | 不需要 | 快速了解當前代碼行的變量狀態(調試暫停時自動加載) |
Locals | 當前函數的局部變量(自動識別) | 不需要 | 排查函數內部局部變量的變化(如函數參數、臨時變量) |
Statics | 靜態變量(靜態局部、靜態全局、全局變量,自動識別) | 不需要 | 監控靜態變量的長期變化(如全局計數器、配置參數) |
3.5.2 數據格式設置
變量窗口中默認顯示 16 進制數值,可根據需求修改為其他格式:
- 在變量窗口中,右鍵需要修改格式的變量 → 選擇 “Format”。
- 選擇目標格式:
- Decimal Format:十進制(默認用于整數、浮點數)。
- Hexadecimal Format:十六進制(默認用于地址、寄存器值)。
- Binary Format:二進制(查看位操作相關變量)。
- Octal Format:八進制(較少使用)。
- Char Format:字符格式(查看 char 類型變量)。
示例:將變量addr
(u32_t 類型)從十六進制(0x681310C3)改為十進制,右鍵addr
?→ “Format> Decimal Format”,變量值會顯示為 1746511043。