No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

7.3 KiB

IAR相关知识点

工程操作

各类型文件含义

文件后缀 其意义
.eww 工作空间文件,包含多个项目的索引信息
.ewp 项目文件,包含项目的设置和配置
.ewd 调试配置文件,用于调试设置
.ewt (嵌入式工作台模板文件) 用于存储工程或文件的模板配置,方便快速创建具有相同设置的新项目。
.c 源代码文件,包含C语言代码
.h 头文件,包含函数声明和宏定义
.s/.asm 汇编文件
.map 单片机地址映射文件
.hex 烧录到芯片的十六进制文件

新建/打开工作区

新建工作区

image-20250709093244205

打开工作区

image-20250709093728548

新建/打开工程

新建工程

image-20250709093806148

打开工程

image-20250709093908974

工作区导入/添加工程

image-20250709094027152

新建分组

image-20250709094122539

新建/打开文件

新建文件

image-20250709094340738

打开文件

image-20250709094428732

工程目录与文件目录的关系

  • 工程目录主要负责项目配置和构建控制,而文件目录则是源代码的物理存储位置。两者通过工程文件中的引用关系连接起来,形成完整的开发环境结构。

工程配置

设备配置

选择芯片型号

image-20250709095356988

image-20250709095422368

编译配置

优化等级

image-20250709095459265

硬件浮点

image-20250709095532506

预处理

image-20250709100328867

链接文件

(.icf链接脚本控制内存分配(Flash/ROM、RAM 布局)关键硬件相关文件)

image-20250709095718033

IAR ICF 文件(.icf)的了解及变量如何分配内存区域

ICF(IAR Linker Configuration File)用于定义程序的内存布局,包括代码、数据、堆栈等在内存中的分布。

变量分配到特定内存区域的方法

你可以通过修改 .icf 文件中的 define blockplace in 语句来控制变量在内存中的分布。

示例(将某段变量放到特定内存区域):

icf复制编辑define region MY_RAM = mem:[from 0x20010000 to 0x20010FFF];
define block my_section with alignment = 8 { section .mydata };
place in MY_RAM { block my_section };

然后在代码中定义变量时,使用 __attribute__((section(".mydata"))) 或 IAR 的 __section

c


复制编辑
__no_init uint8_t my_buffer[1024] @ ".mydata"; // IAR语法

文件路径配置

image-20250709095759245

输出文件路径

image-20250709100111787

输出文件配置

image-20250709100429885

调试器配置

image-20250709100507410

库相关配置

image-20250709100552114

静态库的封装

  1. image-20250709185406199

  2. image-20250709185505451

  3. image-20250709185622450

  4. 屏蔽不用编译的文件

    image-20250709185744113

    image-20250709185833195

  5. 编译

静态库的调用

  1. image-20250709185922441
  2. image-20250709190002503
  3. 将之前的.c文件删除
  4. 编译执行

工程调试

断点

设置断点

设置断点(点击代码行左侧,出现红色圆圈)

禁用断点

禁用断点(右键红色圆圈,Enable/disable)

启用断点

启用断点(右键红色圆圈,Enable/disable)

删除断点

删除断点(再次点击代码行左侧,红色圆圈消失)

条件断点

条件断点(可以设置一个条件,当条件满足时,断点生效)

image-20250709104442792

监控信息

image-20250709101836850

寄存器信息

image-20250709105019076

内存信息

image-20250709105314139

栈信息

image-20250709105420224

汇编信息

image-20250709105851015

调用堆栈信息

调用堆栈窗口通常在IDE(如Visual Studio)中提供,它展示了函数调用的顺序列表。

image-20250709190439295

单步调试

逐过程

image-20250709191214143

逐语句

image-20250709191149273

复位

image-20250709103631255

跳出

image-20250709191239821

IAR 调试常用操作对照表(含英文缩写、快捷键和含义)

中文名称 英文名称 缩写/简称 快捷键 含义说明
逐语句 Step Into StepInSI F11 执行当前语句,若为函数调用,则进入函数内部逐句调试。
逐过程 Step Over StepOverSO F10 执行当前语句,若为函数调用,则跳过函数体,直接执行下一行。
跳出 Step Out StepOutSR Shift + F11 执行当前函数剩余代码并跳出,返回到调用该函数的位置。
复位 Reset Reset 无默认快捷键 让 MCU 从复位向量重新启动程序执行(从 main() 或初始化开始)。

参考文献