# IAR相关知识点 ## 工程操作 - **各类型文件含义** | 文件后缀 | 其意义 | | :-------: | :----------------------------------------------------------: | | `.eww` | 工作空间文件,包含多个项目的索引信息 | | `.ewp` | 项目文件,包含项目的设置和配置 | | `.ewd` | 调试配置文件,用于调试设置 | | `.ewt` | (嵌入式工作台模板文件) 用于存储工程或文件的模板配置,方便快速创建具有相同设置的新项目。 | | `.c` | 源代码文件,包含C语言代码 | | `.h` | 头文件,包含函数声明和宏定义 | | `.s/.asm` | 汇编文件 | | `.map` | 单片机地址映射文件 | | `.hex` | 烧录到芯片的十六进制文件 | - **新建/打开工作区** - 新建工作区 ![image-20250709093244205](./pictures/image-20250709093244205.png) - **打开工作区** ![image-20250709093728548](./pictures/image-20250709093728548.png) - **新建/打开工程** - 新建工程 ![image-20250709093806148](./pictures/image-20250709093806148.png) - **打开工程** ![image-20250709093908974](./pictures/image-20250709093908974.png) - **工作区导入/添加工程** ![image-20250709094027152](./pictures/image-20250709094027152.png) - **新建分组** ![image-20250709094122539](./pictures/image-20250709094122539.png) - **新建/打开文件** - 新建文件 ![image-20250709094340738](./pictures/image-20250709094340738.png) - 打开文件 ![image-20250709094428732](./pictures/image-20250709094428732.png) - **工程目录与文件目录的关系** - 工程目录主要负责项目配置和构建控制,而文件目录则是源代码的物理存储位置。两者通过工程文件中的引用关系连接起来,形成完整的开发环境结构。 ## 工程配置 - **设备配置** - 选择芯片型号 ![image-20250709095356988](./pictures/image-20250709095356988.png) ![image-20250709095422368](./pictures/image-20250709095422368.png) - **编译配置** - 优化等级 ![image-20250709095459265](./pictures/image-20250709095459265.png) - 硬件浮点 ![image-20250709095532506](./pictures/image-20250709095532506.png) - 预处理 ![image-20250709100328867](./pictures/image-20250709100328867.png) - 链接文件(.icf链接脚本控制内存分配(Flash/ROM、RAM 布局)关键硬件相关文件) ![image-20250709095718033](./pictures/image-20250709095718033.png) - 文件路径配置 ![image-20250709095759245](./pictures/image-20250709095759245.png) - 输出文件路径 ![image-20250709100111787](./pictures/image-20250709100111787.png) - 输出文件配置 ![image-20250709100429885](./pictures/image-20250709100429885.png) - 调试器配置 ![image-20250709100507410](./pictures/image-20250709100507410.png) - 库相关配置 ![image-20250709100552114](./pictures/image-20250709100552114.png) - 静态库的封装 1. ![image-20250709185406199](./pictures/image-20250709185406199.png) 2. ![image-20250709185505451](./pictures/image-20250709185505451.png) 3. ![image-20250709185622450](./pictures/image-20250709185622450.png) 4. 屏蔽不用编译的文件 ![image-20250709185744113](./pictures/image-20250709185744113.png) ![image-20250709185833195](./pictures/image-20250709185833195.png) 5. 编译 - 静态库的调用 1. ![image-20250709185922441](./pictures/image-20250709185922441.png) 2. ![image-20250709190002503](./pictures/image-20250709190002503.png) 3. 将之前的.c文件删除 4. 编译执行 ## 工程调试 - 断点 - 设置断点 设置断点(点击代码行左侧,出现红色圆圈) - 禁用断点 禁用断点(右键红色圆圈,Enable/disable) - 启用断点 启用断点(右键红色圆圈,Enable/disable) - 删除断点 删除断点(再次点击代码行左侧,红色圆圈消失) - 条件断点 条件断点(可以设置一个条件,当条件满足时,断点生效) ![image-20250709104442792](./pictures/image-20250709104442792.png) - 监控信息 ![image-20250709101836850](./pictures/image-20250709101836850.png) - 寄存器信息 ![image-20250709105019076](./pictures/image-20250709105019076.png) - 内存信息 ![image-20250709105314139](./pictures/image-20250709105314139.png) - 栈信息 ![image-20250709105420224](./pictures/image-20250709105420224.png) - 汇编信息 ![image-20250709105851015](./pictures/image-20250709105851015.png) - 调用堆栈信息 调用堆栈窗口通常在IDE(如Visual Studio)中提供,它展示了函数调用的顺序列表。 ![image-20250709190439295](./pictures/image-20250709190439295.png) - 单步调试 - 逐过程 ![image-20250709191214143](./pictures/image-20250709191214143.png) - 逐语句 ![image-20250709191149273](./pictures/image-20250709191149273.png) - 复位 ![image-20250709103631255](./pictures/image-20250709103631255.png) - 跳出 ![image-20250709191239821](./pictures/image-20250709191239821.png) ## IAR 调试常用操作对照表(含英文缩写、快捷键和含义) | 中文名称 | 英文名称 | 缩写/简称 | 快捷键 | 含义说明 | | -------- | --------- | ------------------ | -------------- | ------------------------------------------------------------ | | 逐语句 | Step Into | `StepIn` 或 `SI` | `F11` | 执行当前语句,若为函数调用,则进入函数内部逐句调试。 | | 逐过程 | Step Over | `StepOver` 或 `SO` | `F10` | 执行当前语句,若为函数调用,则跳过函数体,直接执行下一行。 | | 跳出 | Step Out | `StepOut` 或 `SR` | `Shift + F11` | 执行当前函数剩余代码并跳出,返回到调用该函数的位置。 | | 复位 | Reset | `Reset` | *无默认快捷键* | 让 MCU 从复位向量重新启动程序执行(从 `main()` 或初始化开始)。 | [**参考文献**](https://blog.csdn.net/ideal121/article/details/118675124?fromshare=blogdetail&sharetype=blogdetail&sharerId=118675124&sharerefer=PC&sharesource=2301_81415726&sharefrom=from_link)