IAR Embedded Workbench for ARM(简称IAR EWARM)是嵌入式ARM/STM32开发的工业级IDE,以编译效率高、代码体积小、低功耗优化能力强著称。本文聚焦IAR从安装授权、项目创建到调试配置的全流程,以STM32F103C8T6为例,手把手讲透核心配置步骤,适配新手入门到项目量产的全场景。
一、前置准备:环境与工具
1. 硬件/软件要求
- 操作系统:Windows 10/11(64位,不建议XP/7,兼容性差);
- 硬件:至少4GB内存、5GB空闲磁盘空间(安装包+项目文件);
- 辅助工具:ST-Link/J-Link仿真器、STM32开发板(如F103C8T6最小系统板);
- 下载地址:IAR官网(https://www.iar.com/products/iar-embedded-workbench/arm/)下载最新版(如EWARM 9.40.1)。
2. 核心文件清单
- IAR安装包(如
ewarm-9.40.1-full.exe); - STM32芯片支持包(IAR内置,无需单独下载);
- 仿真器驱动(ST-Link/V2驱动、J-Link驱动,官网下载);
- 试用许可证(官网申请,30天免费,无代码大小限制)。
二、Step1:IAR安装与许可证配置
1. 安装流程(全程非中文路径)
- 双击安装包
ewarm-9.40.1-full.exe,选择语言为English(中文易出兼容问题),点击Next; - 接受许可协议(
Accept the license agreement),点击Next; - 选择安装路径:建议
D:\IAR Systems\EWARM 9.40.1(避免C盘/中文/空格路径),点击Next; - 选择安装组件:
- 必选:
ARM Compiler、C-SPY Debugger、STM32 Support; - 可选:
Documentation(离线文档,建议安装);
- 必选:
- 确认安装信息,点击
Install,等待安装完成(约5-10分钟); - 安装完成后,取消勾选
Launch IAR Embedded Workbench(先配置许可证),点击Finish。
2. 许可证配置(关键步骤)
IAR为商业软件,需配置许可证才能正常使用(试用/商业授权均可):
- 打开
IAR License Manager:- 路径:
D:\IAR Systems\EWARM 9.40.1\common\bin\IarLicenseManager.exe;
- 路径:
- 申请试用许可证:
- 点击
Get a license→ 选择Evaluate IAR products→ 跳转到IAR官网,填写信息申请30天试用许可证; - 邮箱接收许可证文件(
.lic格式),保存到本地(如D:\IAR_License\ewarm_trial.lic);
- 点击
- 导入许可证:
- 在
IAR License Manager中点击Load license→ 选择下载的.lic文件 → 提示License loaded successfully即配置完成; - 验证:点击
View licenses,能看到IAR Embedded Workbench for ARM的有效期,说明授权成功。
- 在
三、Step2:新建STM32项目(基础配置)
以STM32F103C8T6 LED闪烁项目为例,完成项目创建与核心配置:
1. 新建空白项目
- 启动IAR Embedded Workbench:桌面快捷方式
IAR Embedded Workbench for ARM; - 新建项目:
- 点击
File→New→Project→ 选择Empty project→ 点击OK; - 保存项目:命名为
STM32F103_LED,选择保存路径(如D:\IAR_Projects\STM32F103_LED),点击Save。
- 点击
2. 添加芯片型号配置(核心)
IAR需指定目标芯片,才能加载对应的启动文件、寄存器定义:
- 右键项目名称(
STM32F103_LED)→Options(或快捷键Alt+F7); - 进入
General Options→Target:Device:点击下拉框 → 搜索STM32F103C8→ 选择STMicroelectronics STM32F103C8;Core:自动识别为ARM7TDMI-S(无需修改);Endian:选择Little(小端模式,STM32默认);
- 点击
OK,IAR自动加载该芯片的底层配置文件。
3. 添加源码文件
(1)新建主程序文件
- 右键项目 →
Add→Add Files; - 在弹出的对话框中,选择
Type为C source file (.c),命名为main.c,点击Save; - 双击
main.c,写入LED闪烁核心代码(基于寄存器操作,无需HAL库):
#include <stdint.h>// 寄存器地址定义(STM32F103C8T6)
#define RCC_APB2ENR *((volatile uint32_t*)0x40021018) // APB2时钟使能寄存器
#define GPIOC_CRL *((volatile uint32_t*)0x40011000) // GPIOC配置寄存器低
#define GPIOC_ODR *((volatile uint32_t*)0x4001100C) // GPIOC输出数据寄存器// 延时函数
void delay_ms(uint32_t ms) {uint32_t i, j;for(i=0; i<ms; i++)for(j=0; j<7200; j++);
}int main(void) {// 1. 使能GPIOC时钟(APB2ENR的第4位为GPIOC时钟位)RCC_APB2ENR |= (1<<4);// 2. 配置PC13为推挽输出(通用推挽,速度50MHz)GPIOC_CRL &= ~(0xF<<20); // 清空PC13的配置位(CRL对应0-7位,CRH对应8-15位,PC13对应CRH的20-23位)GPIOC_CRL |= (0x3<<20); // 输出模式,50MHzGPIOC_CRL |= (0x0<<22); // 通用推挽输出// 3. LED闪烁主循环while(1) {GPIOC_ODR |= (1<<13); // PC13置1(LED灭,根据硬件接线调整)delay_ms(500);GPIOC_ODR &= ~(1<<13); // PC13置0(LED亮)delay_ms(500);}
}// 中断向量表(简化版,仅适配基础运行)
void Reset_Handler(void) {main();
}#pragma weak Reset_Handler = Reset_Handler
(2)添加启动文件(可选,简化版可省略)
STM32F103需启动文件初始化堆栈/中断,IAR提供现成模板:
- 点击
Tools→Configure Custom Compiler Builds; - 选择
STMicroelectronics→STM32F1→Startup Files; - 选择
startup_stm32f10x_md.s(中容量芯片),添加到项目中。
3. 编译选项配置(核心优化)
右键项目 → Options,依次配置以下参数:
(1)General Options(通用配置)
Target:确认芯片型号为STM32F103C8;Stack/Heap:设置堆栈大小(默认0x400即可,小项目无需调整)。
(2)Compiler(编译器配置)
Optimization:- 开发调试:选择
Low(低优化,避免调试时变量被优化); - 量产发布:选择
High(高优化,代码体积减少10%-20%);
- 开发调试:选择
Preprocessor:添加头文件路径(如有自定义头文件,点击Add添加路径);Language:选择C99(支持现代C语法,如uint32_t)。
(3)Linker(链接器配置)
Config:选择Linker configuration file→ 点击Edit,选择对应芯片的链接脚本(IAR内置stm32f103c8.icf);Output:- 勾选
Generate output file; Format选择Intel extended hex(生成HEX烧录文件);Output file命名为STM32F103_LED.hex,路径默认即可;
- 勾选
Extra options:勾选Use CMSIS(启用CMSIS库,简化寄存器操作)。
(4)Debugger(调试器配置)
Driver:选择仿真器类型(如ST-Link或J-Link);- 若用ST-Link:选择
ST-Link→ 点击Setup→ 确认Connection为SWD(默认,比JTAG更节省引脚); - 若用J-Link:选择
J-Link/J-Trace→ 配置Device为STM32F103C8;
- 若用ST-Link:选择
Download:勾选Erase flash before downloading(下载前擦除Flash)。
四、Step3:编译与调试配置
1. 编译项目
- 增量编译:点击工具栏
Make按钮(或快捷键F7),仅编译修改的文件,速度快; - 全编译:点击
Rebuild All按钮(或快捷键Ctrl+F7),清空缓存全量编译; - 编译结果:
- 无报错:
Messages窗口显示0 errors, 0 warnings,生成STM32F103_LED.hex文件; - 有报错:根据
Messages窗口提示修复(如寄存器地址错误、头文件缺失)。
- 无报错:
2. 调试配置(核心步骤)
- 连接硬件:将ST-Link/J-Link仿真器连接到开发板,USB接入电脑;
- 启动调试:
- 点击工具栏
Debug按钮(或快捷键Ctrl+D); - IAR自动下载程序到开发板Flash,进入调试模式;
- 点击工具栏
- 调试核心操作:
- 单步进入:
F7(进入函数内部); - 单步跳过:
F8(跳过函数,逐行执行); - 断点设置:点击代码行号旁空白处,红色圆点表示断点生效;
- 寄存器查看:
View→Registers→ 实时查看GPIO/内核寄存器值; - 变量监控:
View→Watch→ 添加变量(如GPIOC_ODR),实时查看值变化; - 运行/暂停:
F5运行,F6暂停。
- 单步进入:
3. 烧录HEX文件(非调试模式)
若仅需烧录HEX文件到开发板,无需调试:
- 打开IAR的
Flash Loader工具:Tools→Flash Loader; - 选择芯片型号
STM32F103C8,点击Load→ 选择生成的STM32F103_LED.hex文件; - 点击
Program,等待烧录完成(进度条100%)。
五、常见配置问题与解决方案
| 配置问题 | 原因 | 解决方案 |
|---|---|---|
| 许可证加载失败(License invalid) | 许可证文件过期/路径错误/未以管理员运行 | 重新申请试用许可证;以管理员运行IAR License Manager;检查许可证路径是否正确 |
| 编译提示“unknown type name uint32_t” | 未启用C99标准/未包含stdint.h | 在Compiler→Language中选择C99;代码中添加#include <stdint.h> |
| 调试时无法连接仿真器 | 驱动未安装/仿真器选错/硬件连接异常 | 安装ST-Link/J-Link驱动;Debugger→Driver选择正确仿真器;检查开发板供电/接线 |
| 烧录提示“device locked” | 芯片开启读保护 | 在Debugger→Setup→Extra options中勾选Disable read protection,重新烧录 |
| 优化级别过高导致调试变量看不到 | High优化删除了未使用变量 | 调试时将Compiler→Optimization改为Low,发布时改回High |
六、进阶配置技巧(量产/低功耗优化)
1. 低功耗配置
IAR内置Energy Profiler工具,优化代码功耗:
- 点击
Tools→Energy Profiler; - 连接开发板,点击
Start,实时监控代码运行时的电流/功耗; - 定位高功耗代码段,针对性优化(如关闭未使用外设时钟)。
2. 代码压缩配置
进一步减小量产代码体积:
- 右键项目→
Options→Linker→Code Compression; - 勾选
Enable code compression,代码体积可再减少5%-10%。
3. 批量烧录配置
适配量产时多设备烧录:
- 点击
Tools→Batch Build; - 配置烧录参数(如烧录后校验、自动重启);
- 导出配置文件,批量执行烧录脚本。