# IAR相关知识点
## 1.工程操作
- **各类型文件含义**
  
  | 工程文件(.ewp)           | 包含工程的配置信息，如工程设置、文件列表和目标设置           |
  | ------------------------ | ------------------------------------------------------------ |
  | 工程选项文件(.opt)       | 包含特定于目标选项的详细配置                                 |
  | .hex                     | 单片机可执行的十六进制文件                                   |
  | 源代码文件(.c, .cpp, .s) | 包含项目的源代码                                             |
  | 头文件(.h)               | 包含源代码文件中引用的声明                                   |
  | .map                     | 记录了程序中各个模块、函数、变量等在内存中的具体布局信息，包括地址范围、段的大小以及引用关系等 |
  | 构建脚本(.bat, .sh)      | 如果使用自动化构建流程，则会用到这些脚本文件                 |
  
- **新建/打开工作区**
  
  ![打开工作区](./pictures/打开工作区.png)
  
- **新建/打开工程**
  
  <img src="./pictures/打开工程.png" alt="打开工程" style="zoom:67%;" />
  
- **工作区中导入/添加工程**
  
  ![添加工程](./pictures/添加工程.png)
  
- **新建分组**
  
  <img src="./pictures/新建分组.png" alt="新建分组" style="zoom:67%;" />
  
- **新建/打开文件**
  
  ![新建文件](./pictures/新建文件.png)
  
- **工程目录与文件目录的关系**
  
  - 工程目录主要负责项目配置和构建控制，而文件目录则是源代码的物理存储位置。两者通过工程文件中的引用关系连接起来，形成完整的开发环境结构。


## 2.工程配置
- **设备配置**

  <img src="./pictures/设备配置.png" alt="设备配置" style="zoom: 50%;" />

- **编译配置**
  
  - 优化等级
  
  ​	<img src="./pictures/优化等级.png" alt="优化等级" style="zoom:50%;" />
  
  - 硬件浮点
  
  ​	<img src="./pictures/硬件浮点.png" alt="硬件浮点" style="zoom:50%;" />
  
  - 预处理
  
  ​	![预处理](./pictures/预处理.png)
  
  - 链接文件
    - 链接脚本控制内存分配

  ​	<img src="./pictures/链接文件.png" alt="链接文件" style="zoom:50%;" />

  - 文件路径配置

  ​	![文件路径配置](./pictures/文件路径配置.png)

  - 输出文件路径

  ​	<img src="./pictures/输出文件路径配置.png" alt="输出文件路径配置" style="zoom:50%;" />

  - 输出文件配置

  ​	<img src="./pictures/输出文件配置.png" alt="输出文件配置" style="zoom: 67%;" />
  
- **调试器配置**

  ![调试器配置](./pictures/调试器配置.png)

- **库相关配置**

  ​	<img src="./pictures/库相关配置.png" alt="库相关配置" style="zoom:50%;" />

- **静态库的封装**

  1. 剔除不需要的文件

     <img src="./pictures/静态库封装.png" alt="静态库封装" style="zoom:67%;" />

  2. 选择生成静态库，最后点击编译即可。

     <img src="./pictures/静态库封装2.png" alt="静态库封装2" style="zoom:67%;" />

- **静态库的调用**

  - 将静态库文件与头文件包含进工程后引用即可。
  
    <img src="./pictures/静态库的使用.png" alt="静态库的使用" style="zoom:67%;" />


## 工程调试
- **断点**
	
	- 设置断点
	
	​	点击代码行左侧，出现红色圆圈
	
	​	![设置断点](./pictures/设置断点.png)
	
	- 禁用断点
	
	​	右键红色圆圈，Enable/disable
	
	​		![禁用断点](./pictures/禁用断点.png)
	
	- 启用断点
	
	​	右键红色圆圈，Enable/disable
	
	​	![设置断点](./pictures/设置断点.png)
	
	- 删除断点
	
	​	再次点击代码行左侧，红色圆圈消失
	
	​	![删除断点](./pictures/删除断点.png)
	
	- 条件断点
	
	​	可以设置一个条件，当条件满足时，断点生效![条件断点](./pictures/条件断点.png)
	
	
	
- **监控信息**	![监控信息](./pictures/监控信息.png)

  

- **寄存器信息**

  ![寄存器信息](./pictures/寄存器信息.png)

  

- **内存信息**

  ![内存信息](./pictures/内存信息.png)

- **栈信息**

  ![栈信息](./pictures/栈信息.png)

- **汇编信息**

  ![汇编信息](./pictures/汇编信息.png)

- **调用堆栈信息**

  ​	![调用堆栈信息](./pictures/调用堆栈信息.png)

- **单步调试**
	
	- 逐过程
	
	​	跟踪执行一条C语句或汇编指令，跟踪进入C函数或者汇编语言子程序。
	
	​	![逐过程](./pictures/逐过程.png)
	
	- 逐语句
	
	​	单步执行一条C语句或汇编指令，不跟踪进入C函数或者汇编语言子程序。
	
	​	![逐语句](./pictures/逐语句.png)
	
	- 复位
	
	​	![复位](./pictures/复位.png)
	
	- 跳出
	
	​	启动C函数或汇编语言子程序从当前位置开始执行，并返回到调用该函数或子程序的下一语句。
	
	​	![跳出](./pictures/跳出.png)