IAR 集成開發環境入門指南:字體設置與調試實戰

一、IAR 的基本使用教程

1. IAR 顏色字體大小設置

  1. 打開設置路徑:點擊頂部菜單欄?Tools?→ 選擇?Options,打開 IDE 配置窗口。
  2. 進入字體顏色設置界面:在彈出的 “IDE Options” 窗口中,雙擊展開?Editor?選項,然后點擊?Colors and Fonts
  3. 字體基礎設置:
    • 字體選擇:推薦使用?Consolas?或?幼圓(代碼顯示清晰,支持等寬格式)。
    • 字體大小:建議設置為?12 號(兼顧顯示范圍與可讀性,可根據屏幕分辨率調整)。
    • 默認字體初始狀態:默認字體為 Courier New,大小為 9 號,需手動修改。
  4. 語法顏色配置(單片機開發推薦方案):
    語法元素(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)
    其他元素默認默認
  5. 保存設置:配置完成后,點擊?確定?保存修改,返回編輯界面即可生效。

2. 其他設置(行號、文件編碼)

  1. 打開設置路徑:同樣通過?Tools?→?Options?進入 IDE 配置窗口。
  2. 行號與編輯輔助設置:
    • 在 “IDE Options” 窗口中,直接選擇?Editor?選項卡,找到以下配置項并勾選 / 設置:
      • Show line numbers:勾選,顯示代碼行號(便于定位代碼位置,排查報錯)。
      • Tab size:設置為?2?或?8(推薦 2,減少縮進占用空間,代碼結構更緊湊)。
      • Auto indent:勾選,開啟自動縮進(輸入代碼時自動對齊,符合編碼規范)。
      • Show right margin:勾選,顯示右邊界線(默認列數為 80,避免代碼行過長,符合代碼規范)。
      • Remove trailing blanks:可選勾選,自動刪除行尾多余空格(保持代碼整潔)。
  3. 文件編碼設置:
    • 在?Editor?選項卡下,找到?File Encoding?區域。
    • 編碼格式:選擇?UTF-8(支持中文注釋,避免亂碼)。
    • 換行符(EOL characters):選擇?PC(適配 Windows 系統,兼容大多數開發環境)。
    • 自動檢測編碼:勾選?Auto-detect character encoding,適配不同來源的文件。
  4. 保存設置:點擊?確定?保存,所有配置即時生效。

3. 新建用戶源文件和頭文件模塊并添加到工程

(1)新建文件
  1. 新建文檔:
    • 方式 1:點擊頂部菜單欄?File?→?New File(或使用快捷鍵?Ctrl+N)。
    • 方式 2:直接點擊工具欄中 “New File” 圖標(文檔 + 加號樣式)。
  2. 保存文件(需區分源文件與頭文件):
    • 源文件(.c):使用快捷鍵?Ctrl+S?保存,命名格式為 “模塊名.c”(示例:modename1.c),保存類型選擇 “IDE Files (.c;.cpp;*.cc...)”。
    • 頭文件(.h):重復新建文件步驟,保存時命名格式為 “模塊名.h”(示例:modename1.h),保存類型同上。
    • 保存路徑:建議統一放在工程目錄下(如 C:\work_now),便于工程管理。
(2)添加文件到工程
  1. 選中工程目錄:在左側 “Workspace” 窗口中,找到目標工程(示例:TEST)下的 “Source Files” 或空白區域。
  2. 添加.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. 編譯輸出可執行文件

  1. 編譯操作:在工程界面中,點擊頂部工具欄的?Build?按鈕(或使用快捷鍵,不同版本可能不同,默認通常為 F7),開始編譯工程。
  2. 編譯結果檢查:
    • 成功標志:編譯完成后,在底部 “Messages” 窗口中顯示?Done. 0 error(s), 0 warning(s),表示無錯誤、無警告,編譯通過。
    • 失敗處理:若出現錯誤(error)或警告(warning),需根據提示定位代碼問題(如語法錯誤、頭文件未引用等),修改后重新編譯。
  3. 生成可執行文件:編譯通過后,工程會在 “Output” 目錄下生成可執行文件(示例:TEST.out),用于后續調試或下載到硬件。

5. 軟件仿真單步調試

(1)選擇調試方式
  1. 打開調試配置:右鍵點擊左側工程目錄空白處 → 選擇?Options,進入工程選項窗口。
  2. 配置調試驅動:
    • 在 “Options for node 'TEST'” 窗口中,選擇?Debugger?選項卡。
    • 驅動選擇(Driver):
      • 軟件仿真(C 語言學習 / 無硬件時):選擇?Simulator(無需硬件,直接在 IDE 中模擬運行)。
      • 硬件調試(STM32 開發時):選擇?ST-Link(需連接 ST-Link 調試器與單片機硬件)。
  3. 保存配置:點擊?OK?保存調試方式設置。
(2)啟動調試與調試操作
  1. 啟動調試:點擊頂部工具欄的?Download and Debug?按鈕(綠色類似播放鍵圖標,或使用快捷鍵?Ctrl+D),加載可執行文件并進入調試模式。
  2. 調試工具欄圖標功能(核心操作):
    圖標功能作用描述
    單步運行(Step Over)執行下一步代碼,若語句包含函數,不進入函數內部(整體執行函數,適合快速跳轉)。
    單步進入(Step Into)執行下一步代碼,若語句包含函數,進入函數內部逐行執行(適合排查函數內問題)。
    單步跳出(Step Out)從當前函數內部跳出,回到函數調用處(函數調試完成后快速返回上層代碼)。
    全速運行(Go)從當前位置全速執行代碼,若遇到斷點則暫停(適合快速定位到目標代碼段)。
    運行到光標處(Run to Cursor)從當前位置執行到光標所在行,無需手動設置斷點(臨時定位高效)。
    重新調試(Restart Debug)重新加載可執行文件,恢復到調試初始狀態(修改代碼后需重新調試時使用)。
    退出調試(Stop Debug)結束調試模式,返回正常編輯界面。
  3. 斷點使用:在代碼行號左側空白處左鍵單擊,會出現紅色圓點(斷點標記),代碼執行到斷點處會自動暫停,便于觀察變量值與程序流程。

6. 自帶終端打印

  1. 調出終端窗口:進入調試模式后,點擊頂部菜單欄?View?→ 選擇?Terminal I/O,打開終端打印窗口(用于查看printf函數輸出內容)。
  2. 終端打印配置:
    • 緩沖區大小(Buffer size):默認設置為 0(實時打印,無延遲)。
    • 控制碼(Ctrl codes):默認無需修改,保持默認配置即可。
  3. 查看打印結果:
    1. 在代碼中合適位置設置斷點(如return 0;前一行),避免程序提前結束。
    2. 點擊?全速運行?按鈕,程序執行到斷點處暫停,printf輸出的內容(如add:7.000000sub:-3.000000等)會顯示在 “Terminal I/O” 窗口的 “Output” 區域。
  4. 輔助調試窗口:調試時可同時打開以下窗口,輔助排查問題:
    • Watch:添加指定變量,實時查看變量值變化(如查看c的計算結果)。
    • Memory:查看內存地址對應的數值(底層硬件調試時常用)。
    • Call Stack:查看函數調用層級關系(排查函數調用順序與嵌套問題)。

IAR 使用調試詳解

文章標簽:# 嵌入式 #IAR

一、IAR 功能介紹

1.1 File 文件菜單

文件菜單包含文件 / 工作空間的基礎操作,編輯與調試模式下功能完全一致,核心操作及快捷鍵如下:

功能選項快捷鍵說明
NewCtrl + N新建文件或工作空間
OpenCtrl + O打開已有的文件或工作空間
Close-關閉當前打開的文件
Save Workspace-保存當前工作空間配置
Save Workspace As...-將工作空間另存為新文件(自定義路徑和名稱)
Close Workspace-關閉當前工作空間(不關閉軟件)
SaveCtrl + S保存當前編輯的文件
Save As...-將當前文件另存為新文件(修改文件名或路徑)
Save All-保存所有已打開的文件和工作空間
Page Setup...-配置打印頁面(紙張大小、邊距等)
PrintCtrl + P打印當前文件
Recent Files-查看最近打開過的文件列表(快速重新打開)
Recent Workspaces-查看最近打開過的工作空間列表
Exit-退出 IAR 軟件

1.2 Edit 編輯菜單

編輯菜單主要用于代碼編輯輔助操作,編輯與調試模式下功能一致,高頻操作及快捷鍵如下:

功能選項快捷鍵說明
UndoCtrl + Z撤銷上一步編輯操作
RedoCtrl + Y恢復上一步撤銷的操作
CutCtrl + X剪切選中的代碼片段
CopyCtrl + C復制選中的代碼片段
PasteCtrl + V粘貼剪切 / 復制的代碼片段
Select AllCtrl + A全選當前文件中的所有代碼
Find and Replace > FindCtrl + F查找指定字符或代碼片段
Find and Replace > Find NextF3查找下一個匹配的目標
Find and Replace > Find PreviousShift + F3查找上一個匹配的目標
Find and Replace > ReplaceCtrl + H替換指定字符或代碼片段
Navigate > Go ToCtrl + G跳轉到指定行號或列號(快速定位代碼位置)
Navigate > Go to DefinitionF12跳轉到變量 / 函數的定義處(代碼溯源常用)
Code Templates > Insert TemplateCtrl + Alt + V插入預設代碼模板(如 if、for 循環)
Code Templates > Edit Templates-編輯或自定義代碼模板(新增常用代碼片段)
Next Error/TagF4跳轉到下一個編譯錯誤或標簽位置
Previous Error/TagShift + F4跳轉到上一個編譯錯誤或標簽位置
Complete WordCtrl + Alt + Space補全單詞(輸入部分字符后觸發,提升輸入效率)
Complete CodeCtrl + Space補全類 / 結構體代碼(自動生成框架)
Parameter HintCtrl + Shift + Space顯示函數參數提示(輸入函數名后觸發,避免參數遺漏)
Match Brackets-匹配括號(定位成對的{}/()/[],排查語法錯誤)
Toggle All FoldsCtrl + Alt + F折疊 / 展開所有代碼塊(快速查看代碼結構)
Auto IndentCtrl + T自動縮進代碼(統一代碼格式,避免凌亂)
Block CommentCtrl + K批量注釋選中代碼(添加/* *///
Block UncommentCtrl + Shift + K取消批量注釋(移除選中代碼的注釋標記)
Toggle BreakpointF9添加 / 取消斷點(調試時暫停代碼執行的位置)
Enable/Disable BreakpointCtrl + 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編輯 / 調試打開工程選項配置(如編譯器、調試器、輸出路徑等,核心配置入口)
MakeF7編輯 / 調試編譯工程(僅編譯修改過的文件,提升效率)
CompileCtrl + F7編輯 / 調試編譯選中的單個文件或組文件夾(針對性編譯)
Rebuild All-編輯 / 調試重新編譯所有文件(忽略緩存,確保代碼最新,耗時較長)
Clean-編輯 / 調試清除編譯生成的中間文件(.obj、.lst 等)和可執行文件(.out)
Batch Build...F8編輯 / 調試批量編譯多個工程配置(如同時編譯 Debug 和 Release 模式)
C-STAT Static Analysis-編輯 / 調試靜態代碼分析(檢查代碼是否符合 MISRA 等規范,排查潛在問題)
Stop BuildCtrl + Break編輯 / 調試停止當前編譯過程(編譯卡住或誤操作時使用)
Download and DebugCtrl + D調試下載程序到目標設備并進入調試模式(需連接硬件或選擇仿真器)
Debug without Downloading-調試僅進入調試模式(不重新下載程序,適用于已下載過程序的場景)
Attach to Running Target-調試附加到正在運行的目標設備(實時監控設備狀態,不中斷程序運行)
Make & Restart DebuggerCtrl + R調試重新編譯工程并重啟調試(修改代碼后快速更新調試內容)
Restart DebuggerCtrl + Shift + R調試重啟調試模式(不重新編譯,僅重置調試狀態)
Download-調試僅下載程序到目標設備(不進入調試模式)
SFR Setup-調試配置特殊功能寄存器(SFR,硬件寄存器調試常用)
Open Device Description File-調試打開設備描述文件(配置芯片型號相關參數)
Save List of Registers-調試保存當前寄存器數值列表(用于對比調試前后寄存器狀態)

1.5 Debug 調試菜單

調試菜單僅在調試模式下顯示,包含核心調試控制操作,高頻功能及快捷鍵如下:

功能選項快捷鍵說明
GoF5全速運行程序(遇到斷點時暫停,無斷點則一直運行)
Break-暫停當前正在運行的程序(全速運行時需手動暫停查看狀態)
Reset-復位目標設備(恢復程序初始狀態,重新開始執行)
Stop DebuggingCtrl + Shift + D退出調試模式(返回編輯界面)
Step OverF10逐行調試(遇到函數調用時不進入函數內部,整體執行函數)
Step IntoF11逐行調試(遇到函數調用時進入函數內部,逐行執行函數代碼)
Step OutShift + 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 TabCtrl + 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 GuideC/C++ 開發指南(講解代碼編輯、編譯優化等 C/C++ 相關功能)
C-SPY Debugging GuideC-SPY 調試指南(詳細講解調試功能的使用方法)
License Manager...許可證管理(激活或更新 IAR 許可證)
About查看軟件版本信息(如 IAR 版本號、安裝路徑等)

二、IAR 設置

2.1 插入 / 編輯模板

當需要頻繁使用相同代碼片段(如函數框架、循環結構)時,可通過模板功能提升效率,操作步驟如下:

  1. 插入模板:在代碼編輯界面,點擊?Edit > Code Templates > Insert Template(快捷鍵 Ctrl + Alt + V),選擇預設模板(如 if、for),IAR 會自動插入模板代碼。
  2. 編輯 / 新增模板
    • 點擊?Edit > Code Templates > Edit Templates,打開模板編輯窗口。
    • 參考默認模板語法(如#if ${condition}\n{\n ${cursor}\n}\n#endif),新增自定義模板(如 while 循環、函數框架)。
    • 保存后,新增模板會出現在 “Insert Template” 列表中,可直接調用。

示例:新增 while 循環模板
模板代碼:

c

運行

while(${condition})
{${cursor} // 光標默認定位此處,便于直接輸入代碼
}

2.2 完型語句

完型語句功能可自動補全代碼(輸入部分字符后觸發),提升輸入效率,使用方式如下:

  1. 單詞補全(Complete Word):輸入變量 / 函數名的前幾個字符(如輸入 “USA”),按下快捷鍵?Ctrl + Alt + Space,IAR 會自動補全匹配的單詞(如 “USART_Initializes”)。
  2. 代碼補全(Complete Code):輸入代碼關鍵字(如 “wh”),按下快捷鍵?Ctrl + Space,IAR 會顯示匹配的代碼模板(如 while 循環),選擇后自動生成完整代碼框架。
  3. 參數提示(Parameter Hint):輸入函數名后(如 “printf”),按下快捷鍵?Ctrl + Shift + Space,IAR 會顯示函數的參數列表(如int printf(const char *format, ...)),避免參數遺漏。

2.3 自動縮進

當代碼格式凌亂(縮進不一致)時,可通過自動縮進功能統一格式,操作方式:

  1. 選中需要整理的代碼片段(或全選文件)。
  2. 按下快捷鍵?Ctrl + T(或點擊?Edit > Auto Indent),IAR 會根據代碼語法(如{}iffor)自動調整縮進,使代碼結構整齊。

示例:凌亂代碼整理前:

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-LinkST-Link需連接 ST-Link 硬件調試器和 STM32 芯片;支持程序下載和實時硬件調試;性價比高。STM32 芯片開發(官方推薦,兼容性好)
J-LinkJ-Link需連接 J-Link 硬件調試器;支持多品牌芯片(如 STM32、NXP);調試功能豐富。多平臺芯片開發(需兼容不同品牌芯片時)
其他調試器(如 I-jet)對應名稱功能更強大(如支持 Trace 跟蹤);價格較高;適用于高端芯片調試。復雜硬件調試(如多核芯片、實時操作系統調試)

3.3 調試

調試的核心是監控程序運行狀態、定位問題,步驟如下:

  1. 配置調試器
    • 右鍵工程空白處 →?Options(Alt + F7) →?Debugger?→ 選擇調試器(如 Simulator 或 ST-Link) → 點擊 “OK” 保存。
  2. 啟動調試
    • 點擊?Project > Download and Debug(快捷鍵 Ctrl + D),IAR 會下載程序到目標設備(或加載仿真環境)并進入調試模式。
  3. 調試控制
    • 單步調試:使用 F10(Step Over,不進函數)或 F11(Step Into,進函數)逐行執行代碼。
    • 全速運行:按下 F5(Go),程序遇到斷點時暫停,無斷點則持續運行。
    • 暫停 / 復位:點擊 “Break” 暫停程序,點擊 “Reset” 復位程序到初始狀態。
  4. 退出調試:按下?Ctrl + Shift + D(Stop Debugging),返回編輯模式。

調試窗口配合使用

  • 查看變量:通過 Watch、Locals、Statics 窗口監控變量值變化。
  • 查看內存:通過 Memory 窗口查看變量在內存中的存儲情況。
  • 查看調用鏈:通過 Call Stack 窗口查看函數調用層級。
  • 查看打印:通過 Terminal I/O 窗口查看printf輸出的日志。

3.4 仿真進行調試

以軟件仿真(Simulator)為例,完整調試流程如下:

  1. 配置仿真器:工程選項中選擇 “Simulator” 調試器(參考 3.3 步驟 1)。
  2. 添加斷點:在需要暫停的代碼行號左側單擊,添加紅色斷點(快捷鍵 F9),如在main函數的while(1)行添加斷點。
  3. 啟動調試:按下 Ctrl + D,進入調試模式,程序會暫停在第一個斷點處。
  4. 逐行調試
    • 按下 F10(Step Over),執行當前行代碼,觀察 Locals 窗口中局部變量的變化(如LED_TOGGLE執行后,相關變量值是否改變)。
    • 若遇到函數調用(如printf),按下 F11(Step Into)可進入函數內部,查看函數執行細節;按下 Shift + F11(Step Out)可跳出函數。
  5. 全速運行:按下 F5(Go),程序會運行到下一個斷點處暫停,或持續運行(無其他斷點時)。
  6. 查看結果:通過 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 進制數值,可根據需求修改為其他格式:

  1. 在變量窗口中,右鍵需要修改格式的變量 → 選擇 “Format”。
  2. 選擇目標格式:
    • Decimal Format:十進制(默認用于整數、浮點數)。
    • Hexadecimal Format:十六進制(默認用于地址、寄存器值)。
    • Binary Format:二進制(查看位操作相關變量)。
    • Octal Format:八進制(較少使用)。
    • Char Format:字符格式(查看 char 類型變量)。

示例:將變量addr(u32_t 類型)從十六進制(0x681310C3)改為十進制,右鍵addr?→ “Format> Decimal Format”,變量值會顯示為 1746511043。

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

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

相關文章

10:00開始面試,10:06就出來了,問的問題有點變態。。。

從小廠出來&#xff0c;沒想到在另一家公司又寄了。到這家公司開始上班&#xff0c;加班是每天必不可少的&#xff0c;看在錢給的比較多的份上&#xff0c;就不太計較了。沒想到8月一紙通知&#xff0c;所有人不準加班&#xff0c;加班費不僅沒有了&#xff0c;薪資還要降40%,這…

Flink 狀態管理的核心能力

我們來看一個復雜的實際案例&#xff1a;阿里巴巴菜鳥的實時物流追蹤系統。 該系統處理來自多個電商平臺&#xff08;天貓、淘寶、速賣通&#xff09;的訂單包裹&#xff0c;通過一個復雜的處理流程&#xff1a; 合并與去重&#xff1a;通過聚合操作將不同來源的訂單合并并去重…

基于go語言的云原生TodoList Demo 項目,驗證云原生核心特性

以下是一個基于 Go 語言 的云原生 TodoList Demo 項目&#xff0c;涵蓋 容器化、Kubernetes 編排、CI/CD、可觀測性、彈性擴縮容 等核心云原生特性&#xff0c;代碼簡潔且附詳細操作指南&#xff0c;適合入門學習。項目概覽 目標&#xff1a;實現一個支持增刪改查&#xff08;C…

手機能看、投屏 / 車機不能看與反向鏈接驗證類似嗎?

有一定關聯&#xff0c;但兩者的技術邏輯并非完全等同 ——“手機能看、投屏 / 車機不能看” 的核心原因更復雜&#xff0c;反向鏈接驗證是其中一種可能的限制手段&#xff0c;但不是唯一甚至不是最主要的手段。要理清這個問題&#xff0c;需要先拆解 “投屏 / 車機播放受限” …

25年9月通信基礎知識補充1:NTN-TDL信道建模matlab代碼(satellite-communications toolbox學習)

看文獻過程中不斷發現有太多不懂的基礎知識&#xff0c;故長期更新這類blog不斷補充在這過程中學到的知識。由于這些內容與我的研究方向并不一定強相關&#xff0c;故記錄不會很深入請見諒。 【通信基礎知識補充10】25年9月通信基礎知識補充1&#xff1a;NTN-TDL信道建模matlab…

洛谷P3370 【模板】字符串哈希 (哈希表)詳解

題目如下&#xff1a;&#xff08;注&#xff1a;解此題我只需左手一根指頭&#xff0c;哈哈哈哈哈哈哈&#xff09;注意&#xff0c;哈希表的好處是能大幅度減少尋找遍歷的時間可能有人不理解哈希值&#xff0c; 這里哈希的模的值一般得是比較大的質數&#xff0c;如標準的100…

光子芯片驅動的胰腺癌早期檢測:基于光學子空間神經網絡的高效分割方法(未做完)

光子芯片驅動的胰腺癌早期檢測:基于光學子空間神經網絡的高效分割方法 1 論文核心概念 本文提出了一種基于集成光子芯片的光學子空間神經網絡(Optical Subspace Neural Network, OSNN),用于胰腺癌的早期檢測與圖像分割。其核心思想是利用光子芯片的高并行性、低延遲和低能…

GraphRAG 工作原理逐步解析:從圖創建到搜索的實戰示例

本篇文章How GraphRAG Works Step-By-Step: From Graph Creation to Search with Real Examples | Towards AI詳細介紹了GraphRAG的工作原理&#xff0c;適合對檢索增強生成&#xff08;RAG&#xff09;和知識圖譜感興趣的讀者。文章的技術亮點在于通過圖結構提升信息檢索效率&…

LAMPSecurity: CTF8靶場滲透

LAMPSecurity: CTF8 來自 <https://www.vulnhub.com/entry/lampsecurity-ctf8,87/> 1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做namp局域網掃描發現靶機 nmap -sn 192.168.23.0/24 那么攻擊機IP為192.168.23.128&#xff0c;靶場IP192.168…

綠算技術閃耀智博會 賦能鄉村振興與產業升級

9月5日至7日&#xff0c;由寧波市人民政府、浙江省經濟和信息化廳、中國信息通信研究院聯合主辦的第十五屆智慧城市與智能經濟博覽會在寧波國際會展中心圓滿落幕。綠算技術受邀參展&#xff0c;并發布與北京東方聯鳴科技發展有限公司聯合打造的《360數智牧業AI模型支撐底座》&a…

淺談“SVMSPro視頻切片”技術應用場景

技術定義視頻切片是一項將連續不斷的視頻流&#xff0c;按特定規則&#xff08;如時間點、事件觸發&#xff09;切割成一個個獨立、完整的MP4等標準視頻文件的技術。這些切片文件體積小、格式通用&#xff0c;易于管理、傳輸和播放。核心價值精準存檔&#xff1a;從海量錄像中精…

php 使用html 生成pdf word wkhtmltopdf 系列1

php 使用html 生成pdf word wkhtmltopdf 系列2 php 使用html 生成 pdf word 項目有個需求 想同時生成word 和pdf 并且對pdf要求比較高 為了一勞永逸 決定寫成html 分別轉成word 和pdf 系統環境 windows10 小皮面板&#xff08;php8&#xff09; linux centos 7.9 寶塔&…

Git常用命令大全:高效開發必備

目錄 常用Git命令清單 1. 新建代碼庫 2. 配置 3. 增加/刪除文件 4. 代碼提交 5. 分支 6. 標簽 7. 查看信息 8. 遠程同步 9. 撤銷 10. 常用操作組合 修改本地分支名和遠程分支名 附錄&#xff1a;Git命令思維導圖 安裝gitlab 常用Git命令清單 一般來說&#xff0…

AJAX入門-URL

本系列可作為前端學習系列的筆記&#xff0c;代碼的運行環境是在VS code中&#xff0c;小編會將代碼復制下來&#xff0c;大家復制下來就可以練習了&#xff0c;方便大家學習。 HTML、CSS、JavaScript系列文章 已經收錄在前端專欄&#xff0c;有需要的寶寶們可以點擊前端專欄查…

【深度學習新浪潮】什么是具身智能?

具身智能(Embodied AI)是人工智能與機器人技術深度融合的前沿領域,其核心是通過物理實體與環境的實時交互閉環,實現感知-認知-決策-行動的一體化自主進化。這類系統不僅能理解語言指令,更能通過高精度傳感器(如觸覺、視覺、力覺融合)感知物理世界,依托多模態大模型完成…

動畫藍圖與動畫狀態機:從 Unity Mecanim 到 Unreal Animation Blueprint 的一把梭

動畫藍圖與動畫狀態機&#xff1a;從 Unity Mecanim 到 Unreal Animation Blueprint 的一把梭這篇是系列的第一篇。目標很簡單&#xff1a;把 Unreal 的 Animation Blueprint 和 Unity 的 Animator Controller&#xff08;Mecanim&#xff09; 放在同一張桌子上&#xff0c;系統…

實戰案例:數字孿生+可視化大屏,如何高效管理智慧能源園區?

摘要&#xff1a; 當智慧遇上能源&#xff0c;一場管理革命正在悄然發生。想象一下&#xff1a;一個占地千畝的能源園區&#xff0c;光伏板、儲能站、風力機組星羅棋布&#xff0c;傳統管理模式下&#xff0c;數據分散、響應滯后、故障頻發... 但某園區引入“數字孿生可視化大屏…

Django 從環境搭建到第一個項目

作為一名剛接觸 Django 的開發者&#xff0c;我在學習過程中整理了這份入門筆記&#xff0c;涵蓋 Django 框架基礎、環境搭建、第一個項目創建以及核心配置&#xff0c;希望能為同樣剛入門的小伙伴提供清晰的學習思路。 一、Django 框架基礎認知 在開始實際操作前&#xff0c…

機器學習實操項目02——Pandas入門(基本操作、創建對象、查看數據、數據選擇、處理缺失數據、數據合并、數據分組、時間序列、繪圖、文件導出)

上一章&#xff1a;機器學習實操項目01——Numpy入門&#xff08;基本操作、數組形狀操作、復制與試圖、多種索引技巧、線性代數&#xff09; 下一章&#xff1a; 機器學習核心知識點目錄&#xff1a;機器學習核心知識點目錄 機器學習實戰項目目錄&#xff1a;【從 0 到 1 落地…

springboot超市貨品信息管理系統

開發環境開發語言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服務器&#xff1a;tomcat7 數據庫&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 數據庫工具&#xff1a;Navicat11 開發軟件&#xff1a;eclipse/myeclipse/idea Mave…