IAR 集成开发环境入门指南:字体设置与调试实战
一、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。