当前位置: 首页 > news >正文

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://aICIaNjH.mstrb.cn
http://uRFQ7HtU.mstrb.cn
http://T6eIes3C.mstrb.cn
http://J7eCOt6S.mstrb.cn
http://vlghdZVB.mstrb.cn
http://j0cqJ1Yk.mstrb.cn
http://NVmaX1Ft.mstrb.cn
http://a336fwo4.mstrb.cn
http://xkCms1xr.mstrb.cn
http://2pVvhT0b.mstrb.cn
http://GrXNnrVi.mstrb.cn
http://INZAOkZe.mstrb.cn
http://pCke0kqL.mstrb.cn
http://ANTGYDyf.mstrb.cn
http://yNGpWNJh.mstrb.cn
http://1KAbBQim.mstrb.cn
http://25g48EYw.mstrb.cn
http://fyLlUcti.mstrb.cn
http://yoj9hcqx.mstrb.cn
http://e8cRcxqZ.mstrb.cn
http://VqWsxlpD.mstrb.cn
http://OkwDtIbA.mstrb.cn
http://dg3AAgD3.mstrb.cn
http://G7RCVrHM.mstrb.cn
http://MLmik1Rr.mstrb.cn
http://yFcP3ISv.mstrb.cn
http://hK1v7xGP.mstrb.cn
http://TV0snkEE.mstrb.cn
http://yixyfRbA.mstrb.cn
http://e5UbjVi6.mstrb.cn
http://www.dtcms.com/a/375235.html

相关文章:

  • CentOS7下Ceph集群部署实战
  • 逆元,除法同余,容斥原理笔记
  • 【springboot+vue】党员党建活动管理平台(源码+文档+调试+基础修改+答疑)
  • JAVA 面试 MySQL
  • 【Pandas】3.2-数据预处理:行的基本操作
  • 【展厅多媒体】 AI人工智能赋能虚拟数字展厅应用与制作
  • Python入门教程之逻辑运算符
  • 构建AI智能体:二十八、大语言模型BERT:原理、应用结合日常场景实践全面解析
  • pytest并发测试,资源问题导致用例失败解决办法
  • 【openEuler 24.03 LTS SP2】真实实验部署ollama0.11.6+deepseekR1:1.5b+open-webUI
  • 欢迎来到“个人产品化”时代
  • 【论文阅读】REFRAG:一个提升RAG解码效率的新思路
  • 云原生监控系统 Prometheus大总结 20250909
  • Python解释器安装配置教程(Windows)
  • Java爬虫获取京东item_get_app数据的实战指南
  • HashMap(JDK1.7到1.8的过渡)
  • 趣味学RUST基础篇(函数式编程迭代器)
  • 抗ASIC、抗GPU 的密码哈希算法(安全密钥派生)Argon2算法
  • Nginx 实战系列(六)—— Nginx 性能优化与防盗链配置指南
  • 深入解析 Apache Flink Checkpoint 与 Savepoint 原理与最佳实践
  • C#WPF控制USB摄像头参数:曝光、白平衡等高级设置完全指南
  • 第2节-过滤表中的行-IN
  • 2025年渗透测试面试题总结-60(题目+回答)
  • 【GD32】ROM Bootloader、自定义Bootloader区别
  • 业务用例和系统用例
  • Google AI Mode 颠覆传统搜索方式,它是有很大可能的
  • MTC出席SAP大消费峰会:行业深度×全球广度×AI创新,助力韧性增长
  • 彩笔运维勇闯机器学习--决策树
  • 成都金牛区哪里租好办公室?国际数字影像产业园享税收优惠
  • vue3 实现将页面生成 pdf 导出(html2Canvas + jspdf)