iar7.3建立工程报错:cannot open the source file "XXXxxx.h

当确定头文件等设置都没有问题的时候,可以试一试下面的方法去解决,我亲身体验完美通过:
方法一.
STM32工程 从IAR6.0 转到 IAR6.3
用IAR6.3打开IAR6.0 的工程,编译的时候出现提示错误:
extern uint32_t __get_PSP(void); 已经在C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h文件中定义
extern uint32_t __get_MSP(void);已经在C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h文件中定义 。。。。。。

这是由于IAR6.3已经加入了CM3的内核定义,就不需要ST库中的core_cm3.c 和 core_cm3.h 这两个文件的定义了

解决办法从ST网站找到:
直接删除core_cm3.c 和 core_cm3.h 这两个文件,然后在工程设置里面勾选 "Use CMSIS"
方法二.
把这个东西注释掉就可以了 core_cm3.h里的这个! 再添加一句
!#if defined (__ICCARM__)
//#include <intrinsics.h> /* IAR Intrinsics *///注释掉 __intrinsic void __DSB(void); //添加上
#endif
方法三:将iar安装文件里面的core_cmFunc.h和core_cmInstr.h文件复制到自己当前工程文件中并包含进来:
设置USE CMSIS方法:
1: Project options > General Options > Library
Configuration 里选择 USE CMSIS ;

编译,通过。。。。。

http://blog.youkuaiyun.com/xiaoxiongli/article/details/49619705

http://blog.youkuaiyun.com/xiaoxiongli/

http://tiyubisai.com/video_news/news_135573.html

<think>嗯,用户遇到了C语言编译错误,提示找不到"uart.h"文件。我需要帮他解决这个问题。首先,我应该回忆一下常见的这种错误的原因。根据引用中的例子,像找不到头文件通常有几个可能性。比如头文件路径没有正确包含,或者文件确实不存在。 首先,用户需要确认这个uart.h文件是否真的存在于项目中。可能他忘记添加这个文件,或者放错了位置。比如,如果头文件在项目目录的include文件夹里,而编译器没有包含这个路径,就会报错。这时候需要检查文件是否存在,路径是否正确。 然后,检查编译器中的包含路径设置。不同的开发环境有不同的设置方法,比如Keil或者IAR,用户需要在项目属性里添加头文件所在的目录。比如引用[2]中的例子,用户可能没有正确设置STM32库的路径,导致找不到stm32f10x_lib.h。所以,用户应该检查IDE中的包含路径是否包含了uart.h所在的文件夹。 接下来,检查头文件引用方式是否正确。如果是使用双引号#include "uart.h",编译器会先在当前目录查找,再去系统路径。如果是尖括号#include <uart.h>,则只在系统路径查找。所以用户需要确认引用方式是否正确,尤其是文件是否在项目目录下。 另外,还要检查文件名的大小写。在Linux系统下,大小写敏感,如果文件名是UART.h,但代码里写的是uart.h,就会出错。用户需要确保文件名和代码中的引用完全一致。 还有可能文件被误删除或移动位置,用户需要确认文件是否存在,并且路径没有变动。如果头文件是第三方库的一部分,可能需要重新安装或更新这个库,确保文件正确安装。 如果以上步骤都没问题,可能需要清理和重新构建项目。有时候旧的编译缓存会导致问题,清理后重新编译可能会解决。 如果用户使用STM32等嵌入式系统,可能需要检查库的配置是否正确,比如引用[2]中的情况,缺少stm32f10x_lib.h,可能需要安装对应的库文件或者调整工程配置。 总结一下,解决步骤应该是:确认文件存在→检查包含路径→检查引用语法→检查大小写→检查文件完整性→清理项目→检查硬件库配置。这样一步步排查,应该能找到问题所在。</think>### C语言编译报错 cannot open source input file "uart.h" 解决方案 #### 1. 确认头文件是否存在 - **检查文件路径**:首先确认`uart.h`文件是否存在于项目中。如果文件位于子目录(如`/include`或`/driver`),需确保路径正确。 - **手动搜索文件**:在项目文件夹中直接搜索`uart.h`,若未找到,需补充文件或重新下载依赖库[^2]。 #### 2. 配置编译器包含路径 - **IDE设置**:在开发环境(如Keil、IAR、Eclipse)中,将`uart.h`所在目录添加到**包含路径**(Include Paths)。例如,在Keil中: ``` Project -> Options for Target -> C/C++ -> Include Paths ``` - **命令行编译**:使用`-I`参数指定路径: ```bash gcc -I./include main.c -o output ``` #### 3. 检查头文件引用方式 - **相对路径与绝对路径**: - 若`uart.h`在子目录`driver`中,应使用: ```c #include "driver/uart.h" ``` - 错误示例:`#include <uart.h>`(除非路径已添加到系统目录)[^3]。 #### 4. 检查文件名大小写 - **系统敏感性**:Linux/Unix系统对文件名大小写敏感,需确保代码中的文件名与实际文件名完全一致。例如,`UART.H`与`uart.h`会被视为不同文件。 #### 5. 验证文件完整性 - **依赖库问题**:若`uart.h`属于第三方库(如STM32标准库),需检查库是否完整安装。引用[2]中的`stm32f10x_lib.h`缺失问题,通常需重新配置库或更新开发环境支持包。 #### 6. 清理并重新构建项目 - **清除缓存**:某些IDE会缓存旧配置,执行`Clean`操作后重新编译: ``` Project -> Clean ``` #### 7. 硬件库配置(嵌入式开发) - **STM32工程示例**:若使用STM32CubeMX生成代码,需在`IDE`中勾选对应的外设库(如UART模块),否则会因库未关联导致头文件缺失[^2]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值