IAR中文网站 > 热门推荐 > IAR ARM CMSIS怎么用 IAR ARM包管理与头文件路径怎么配
IAR ARM CMSIS怎么用 IAR ARM包管理与头文件路径怎么配
发布时间:2026/04/27 10:45:35

  很多人刚把IAR和ARM工程接起来时,最容易卡住的不是编译器本身,而是CMSIS、软件包和头文件路径这三件事没有串到一起。表面上看,问题像是找不到`core_cm4.h`、设备头文件不识别,或者换了芯片以后包依赖一片发红;实际上在IAR里,这几步是有固定入口的。IAR当前文档说明,传统CMSIS-Pack工程可以通过【Project】里的【CMSIS-Manager】安装Pack并选择组件,新建工程时还可以直接选择【Empty CMSISPack project】;如果走的是CMake或CMSIS-Toolbox路线,则又有单独的Pack root和自动下载缺包选项。

  一、IAR ARM CMSIS怎么用

 

  IAR里用CMSIS,最稳的做法不是先手工拷一堆头文件,而是先把Pack装好,再让工程按CMSIS的组件关系自己建立起来。这样后面设备切换、依赖补齐和示例导入都会顺很多。IAR官方文档把流程写得很清楚,入口就在【Project】里的【CMSIS-Manager】。

 

  1、先安装需要的CMSIS-Pack

 

  在当前工程里点【Project】【CMSIS-Manager】,先切到【Devices】页签选择目标器件,再到【Packs】页签选择要安装的软件包,最后点【Install】开始安装。安装过程中,IAR会把状态信息输出到【Console】里,直到安装完成。这个步骤适合先把芯片支持包、设备启动文件、CMSIS Core相关内容装齐,不建议一开始就靠手工复制。

 

  2、如果是新工程,直接从CMSIS-Pack工程模板起步

 

  IAR官方给出的标准做法是,在工作区里新建工程时选择【Empty CMSISPack project】,保存后再选设备。进入CMSIS Manager之后,可以在【Components】视图里勾选需要的软件组件;如果依赖项出现橙色,说明可以由工具自动解析,选中后点【Resolve】即可;如果依赖项显示红色,通常说明缺少对应Pack,需要回到安装步骤补包。全部选择完成后点【File】【Save】,工程会自动加入与你当前选择相关的文件。

 

  3、别把CMSIS只当成头文件集合

 

  很多人把CMSIS理解成几个核心头文件,其实IAR文档里对CMSIS-Pack的定义更完整,它不仅包含软件组件,还包含设备支持、评估板支持和示例工程。也就是说,CMSIS在IAR里不是单纯给你一个`Include`目录,而是一套可选组件和依赖关系管理机制。用对这个入口,后面启动文件、驱动组件和示例代码都会更容易跟上。

 

  4、如果工程已经转到CMSIS-Toolbox,入口要换

 

  当前IAR 9.70.x文档还单独给了【Project】【Options】【CMake/CMSIS-Toolbox】页面,用来设置CMSIS-Toolbox路径、Pack root位置,以及是否自动下载缺失的Pack。如果你的工程不是传统`.ewp`手工管理模式,而是`csolution.yml`这类CMSIS-Toolbox项目,就不要再只盯着【CMSIS-Manager】,而要去这个页面看Pack仓库和工具链绑定。

 

  二、IAR ARM包管理与头文件路径怎么配

 

  包管理和头文件路径,最好分开看。包管理解决的是“工程应该拿到哪些组件和文件”,头文件路径解决的是“编译器到哪里找这些文件”。这两件事经常一起出问题,但处理入口并不相同。IAR当前文档把头文件路径统一放在【Preprocessor】选项里管理,而CMSIS-Pack则主要由【CMSIS-Manager】或【CMake/CMSIS-Toolbox】页面负责。

 

  1、常规工程先把Pack装好,再看路径

 

  如果是传统IAR工程,先确保CMSIS-Pack已安装、组件已选择并保存。因为IAR在保存CMSIS组件选择后,会把与选择相关的文件填充进项目。这个时候再去看路径问题,才能区分到底是包没装全,还是编译器路径没加对。很多人一开始就手工补路径,最后越补越乱,原因就在这里。

 

  2、手工补头文件路径要去【Preprocessor】

 

  IAR官方文档说明,编译器和汇编器的头文件路径都在【Options】里的【Preprocessor】页面配置,这里既可以定义宏,也可以定义include paths。要新增目录,可以打开【Edit Include Directories】对话框,在里面增加、删除路径,或者把路径设成相对路径和绝对路径。也就是说,只要你现在遇到的是`No such file or directory`这类编译报错,优先就该到这里检查,而不是去【Linker】里找。

  3、路径要分清CMSIS Core、设备头文件和厂商驱动

 

  这一步特别容易配混。CMSIS Core相关头文件通常来自ARM Core层,设备头文件来自具体芯片Pack,厂商HAL或驱动又常常在另一个目录层级。实际配置时,不要只把最上层Pack目录一股脑扔进去,而要根据工程里真正`#include`的文件层级去配。这样做的好处是,编译器搜索链更干净,后面切换芯片或换包版本时也不容易把旧路径残留下来。这个判断属于工程实践,但它与IAR当前“由Preprocessor管理include路径”的机制是匹配的。

 

  4、用CMSIS-Toolbox时,要顺带核对Pack root

 

  IAR 9.70.x文档明确写到,在【Project】【Options】【CMake/CMSIS-Toolbox】里可以【Override pack root】,也就是覆盖本地Pack仓库位置;还可以让IDE自动下载缺失的Pack。要是你用了CMSIS-Toolbox,而包明明装过却仍然找不到,问题很可能不是头文件路径本身,而是工程指向了另一个Pack root,导致当前项目看不到你以为已经存在的包。

 

  三、IAR ARM工程里为什么总是找不到CMSIS头文件

 

  真正让人反复报错的,往往不是不会配,而是几步顺序错了。IAR里CMSIS相关问题,最常见的几类原因其实很固定,按顺序查通常就能很快收口。

 

  1、先查Pack有没有真正安装

 

  先回到【Project】【CMSIS-Manager】,看目标器件对应的Pack是否已经安装。如果依赖项是红色,优先说明缺包,而不是路径问题。这个时候继续加Include目录通常没意义,因为根文件本身就没到本机。

 

  2、再查组件选择有没有保存

 

  有些人选完组件就直接关窗口,没有执行【File】【Save】。IAR官方写得很明确,只有保存后,项目才会被填充进与你选择相关的文件。没保存时,表面上看像是已经选了CMSIS,实际工程里并没有真正把对应文件关系接进去。

 

  3、然后查编译器Include路径

 

  如果包装好了、组件也保存了,但编译还是提示找不到头文件,就去【Project】【Options】【Preprocessor】检查Include Directories。看路径是不是指向了正确目录,路径层级是不是过深或过浅,是否把旧芯片目录也残留在列表里。IAR官方对这个入口的定义非常明确,头文件路径就在这里管。

 

  4、最后再看工程类型是不是搞混了

 

  传统CMSIS-Pack工程和CMSIS-Toolbox工程,管理入口不是一回事。前者更依赖【CMSIS-Manager】,后者更依赖【CMake/CMSIS-Toolbox】里的Pack root、自动下载和工具路径设置。要是这两套流程混着用,很容易出现包在一边、工程在另一边、路径又配在第三处的情况,最后看起来就像是CMSIS总也配不通。

  总结

 

  IAR ARM CMSIS怎么用,核心不是先手工搬头文件,而是先通过【CMSIS-Manager】把设备和Pack装好,再从组件视图里选对内容并保存到工程。IAR ARM包管理与头文件路径怎么配,关键也不是到处补目录,而是把包管理放在【CMSIS-Manager】或【CMake/CMSIS-Toolbox】里处理,把编译器头文件路径统一放在【Preprocessor】里维护。只要把这两条线分清,再按“装包、选组件、保存工程、检查Include路径”的顺序走,IAR里的CMSIS工程通常会顺很多。

读者也访问过这里:
135 2431 0251