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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…