IAR Embedded学习笔记

IAR安装与注册

注册软件点击此处下载IAR注册软件,进入IAR目录下下载

  • 注册机版本:不同版本的 IAR 需要使用相应版本的注册机。例如,IAR for ARM 8.42.1 以下版本使用 License GeneratorV1.3 注册机,而 IAR for ARM 8.42.1 及以上版本则需要使用 License GeneratorV1.4 注册机。
  • 操作步骤:以 IAR for ARM 8.42.1 以下版本为例,打开注册机,选择对应的产品和版本,生成注册码,取消加密狗,保存注册文件 1,再用注册机打开该文件生成注册文件 2,即可完成激活。对于 IAR for ARM 9.x 系列版本,如 IAR for ARM 9.30.1,除了上述离线激活的基本步骤外,还需要将 licpatcher64.exe 工具复制到 IAR 的三个安装目录中运行,才能完成激活。

IAR报错

IAR出现错误:Get Alternative File 解决办法

  1. 解决方法:点击 Project -> Rebuild All
  2. 错误原因:出现这种错误的大多数原因是直接用例程,而例程在人家电脑上编译的,对应的路径文件也是人家电脑上的,所以必须重新rebuild一下对应到自己的电脑上。

Driver Fatal error: Failed to search for probes, ensure that the USB drivers areinstallled. Session aborted!

  1. 解决方法:点击 Project -> Options for node -> Debugger -> Driver ->选择对应烧入器
  2. 错误原因:烧入器选择错误。

IAR的警告: Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once).

先来说说这个警告产生的原因: 在Windows中换行符使用 <CR><LF> 来表示换行, 在UNIX类系统中则使用 <LF>. 当一个文件从一个系统转换到另外一个系统, 因为换行符的定义不同, 就会产生问题
知道了原因, 但问题依然不好解决. 有时候可能有几百个上千个文件从Linux平台转到Windown平台编译, 总不能一个一个的改吧? 好在此警告对结果并没影响, 所以采取简单粗暴的方式, 将它屏蔽掉, 眼不见心不烦.

解决方法: 点击 Project -> Options... -> C/C++ Compiler -> Diagnostics -> Suppress these diagnostics -> 填写 Pa050 警告就消失了

IAR设置堆栈和进程内存布局

解决方法: 右键点击项目工程或 Project -> Options... -> Linker功能菜单 -> Config选项 -> Linker configuration file选项框 -> Edit

IAR设置堆栈时出现: Auxliary file path:xxx is missing or corrupt.The linker configuration file can only be edited in a text editor.

解决方法: 暂时没有找到

IAR窗口恢复默认

解决方法: 1. 关闭IAR; 2.定位到工程目录下的settings文件夹; 3. 找到扩展名为.wsdt的文件; 4. 删除该类型的文件; 5. 重新打开工程。

IAR 添加目标头文件

解决方法: 右键点击项目工程或 Project -> Options... -> C/C++ Compiler -> Preprocessor -> Additional include directories: (one per line) -> ··· 建议头文件转换成如下格式,方便后续人员使用

1
2
3
$PROJ_DIR$\..\Cmsis
$PROJ_DIR$\..\Lib\inc
$PROJ_DIR$\..\Lib\src

点击··· 进入后,输入一下路径,后面有一个下拉按钮选择路劲格式

IAR 添加全局宏定义

解决方法: 右键点击项目工程或 Project -> Options... -> C/C++ Compiler -> Preprocessor -> Defined symbols: (one per line) 格式如下

1
2
USE_STDPERIPH_DRIVER
USING_LOG

IAR 擦除FLASH

擦除全部存储空间:Project -> Download -> Erase Memory