【Linux】安装MDK时遇到SVDConv exied with an error.No uVision SystemViewer file created.

博客介绍了安装问题的解决办法,首先检查安装路径是否为中文,若路径均为英文,则检查安装版本是否匹配,若不匹配则安装低版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决办法

  1. 检查安装路径是否为中文。
  2. 若均为英文,则检查安装版本是否匹配,否则安装低版本。
    在这里插入图片描述
<think>我们正在解决Keil MDK-ARM环境下编译项目出现的头文件找不到的问题。根据错误信息,缺失的头文件包括:`bsp_i2c.h`, `i2c.h`, `bsp_oled.h`。在Keil中,这类问题通常是由于头文件路径未正确配置导致的。 ### 解决步骤: #### 1. **确认头文件存在于项目目录中** - 在项目文件夹中,检查这些头文件是否确实存在。例如: - `bsp_i2c.h` 应该在项目目录的某个子文件夹中(如 `Drivers/BSP` 或 `Inc`)。 - 同样检查 `i2c.h` 和 `bsp_oled.h` 的位置。 - 如果不存在,需要从其他地方复制这些文件到项目目录中(比如从厂商提供的SDK中获取)。 #### 2. **添加头文件路径到Keil项目** - 打开Keil uVision,加载项目 `uart_protocol.uvprojx`。 - 点击菜单栏的 `Options for Target`(魔术棒图标)→ 选择 `C/C++` 选项卡。 - 在 `Include Paths` 框中,点击右侧的 `...` 按钮,弹出文件夹选择窗口。 - 添加包含缺失头文件的文件夹路径。例如: - 如果 `bsp_i2c.h` 位于 `.\Drivers\BSP`,则添加该路径。 - 同样添加 `i2c.h` 和 `bsp_oled.h` 所在的文件夹。 - 可以添加多个路径,用分号隔开(Keil会自动处理多个路径)[^1]。 #### 3. **检查文件是否被添加到项目** - 在Keil的 `Project` 窗口中,检查这些头文件是否在项目结构中(通常在 `Header Files` 分组下)。 - 如果没有,可以右键点击 `Header Files` → `Add Existing Files to Group...` 来添加。 #### 4. **检查头文件命名和大小写** - 嵌入式系统(尤其是使用ARMCC编译器)通常对文件名大小写敏感。确保代码中的 `#include` 指令中的文件名与磁盘上的文件名大小写完全一致。 - 例如,如果磁盘文件是 `BSP_I2C.H`,而代码中是 `#include "bsp_i2c.h"`,则可能无法找到。建议统一使用小写文件名。 #### 5. **重新编译项目** - 完成路径添加后,点击 `Rebuild` 按钮重新编译,观察错误是否消失。 #### 6. **如果头文件来自外部库** - 如果这些头文件属于某个外部库(如STM32Cube库),确保该库已正确安装,并且路径已添加到Keil中。 - 有需要安装特定的设备支持包(Device Family Pack),可以通过Keil的 `Pack Installer` 安装。 ### 常见问题: - **路径设置错误**:路径添加不正确或遗漏。注意相对路径和绝对路径的区别,建议使用相对路径(相对于项目文件)。 - **头文件未包含在项目中**:即使路径正确,如果头文件未被添加到项目结构中,有也会导致问题(尽管Keil会搜索路径)[^1]。 - **编译器兼容性**:确保使用的编译器(ARMCC V6.19)支持这些头文件。某些头文件可能针对特定编译器(如GCC)编写,需要调整。 ### 附加建议: - 将头文件集中放在一个文件夹(如 `Inc`)中,避免层级过深[^1]。 - 使用 `#include <...>` 和 `#include "..."` 的区别: - `#include <...>` 用于标准库或系统头文件,搜索编译器系统路径。 - `#include "..."` 用于用户自定义头文件,优先搜索当前文件所在目录,然后搜索 `Include Paths`。 ### 示例:添加路径的图示 1. 打开 `Options for Target` → `C/C++` 选项卡。 2. 点击 `Include Paths` 右侧的按钮。 3. 点击 `Add` 按钮(文件夹图标),输入路径或浏览选择。 - 例如:`.\Drivers\BSP;.\Drivers\OLED;.\User` 4. 点击 `OK` 保存。 完成以上步骤后,重新编译项目,问题应得到解决。 ### 相关问题 1. 如何在Keil MDK中正确配置头文件搜索路径? 2. Keil编译出现未定义符号(undefined symbol)错误如何解决? 3. 如何管理Keil项目中的头文件和源文件分组? 4. 嵌入式开发中,如何移植基于标准外设库的代码到HAL库? [^1]: 参考用户提供的经验,建议将头文件放在较浅的目录层级以避免Keil搜索失败。</think>### 解决Keil5编译错误:头文件缺失(bsp_i2c.h, i2c.h, bsp_oled.h) 在Keil MDK-ARM环境中编译嵌入式项目,出现 `'xxx.h' file not found` 错误通常是由于头文件路径未正确配置或文件缺失导致的。以下是系统化的解决步骤: --- #### 步骤1:验证头文件是否存在 1. **检查项目目录** 在项目文件夹中搜索缺失的头文件(如 `bsp_i2c.h`): - 打开项目文件夹 → 使用文件管理器搜索功能 - 典型路径:`./Drivers/BSP/` 或 `./User/` 2. **确认文件完整性** 若文件不存在: - 从原始SDK/仓库重新复制文件到项目目录 - 确保文件名大小写一致(嵌入式系统区分大小写) --- #### 步骤2:添加头文件路径到Keil 1. **打开路径配置** - 菜单栏 → `Project` → `Options for Target` → `C/C++` 选项卡 - 找到 `Include Paths` 设置区域 2. **添加自定义路径** - 点击末尾的 `...` 按钮 → 添加头文件所在目录(示例): ```plaintext .\Drivers\BSP # bsp_i2c.h 路径 .\Drivers\OLED # bsp_oled.h 路径 .\Libraries\I2C # i2c.h 路径 ``` - **重要**:使用相对路径(如 `.\` 开头)避免环境依赖[^1] 3. **路径格式要求** - 每行一个路径,用分号分隔 - 路径中避免中文和特殊字符 --- #### 步骤3:检查文件包含关系 1. **头文件引用方式** 在代码中统一使用相对路径包含: ```c // 正确示例(优先使用相对路径) #include "Drivers/BSP/bsp_i2c.h" ``` 而非仅写 `#include "bsp_i2c.h"` 2. **依赖顺序调整** 在 `Options for Target` → `C/C++` → 勾选 `Always Search User Include Paths`,确保优先搜索自定义路径。 --- #### 步骤4:验证硬件支持包 1. **检查设备支持包** - 菜单栏 → `Pack Installer`(立方体图标) - 确认目标芯片型号(如STM32F4xx)的DFP(Device Family Pack)已安装 - 更新到最新版本(可能修复路径问题) 2. **重建索引** - 关闭Keil → 删除项目目录下的 `Objects` 和 `Listings` 文件夹 - 重新打开项目 → `Project` → `Rebuild All target files` --- #### 常见问题解决方案 | 问题类型 | 解决方法 | |---------|---------| | 文件在项目中但未添加 | 右键 `Project` 窗口 → `Add Existing Files...` → 选择头文件 | | 大小写不一致 | 统一文件名大小写(如 `BSP_I2C.H` → 改为 `bsp_i2c.h`) | | 路径层级过深 | 将头文件移动到更浅目录(如 `<3` 层)[^1] | | 编译器版本问题 | `Project` → `Manage` → `Project Items` → 切回ARMCC V5编译器测试 | --- #### 配置示例 ```c /* 在protocol_test.c中正确包含 */ #include "Drivers/BSP/bsp_oled.h" // 使用相对路径 ``` ```plaintext // Include Paths 配置示例 .\;.\Drivers;.\Libraries;.\User ``` > 配置后点击 `Rebuild` 重新编译,通常可解决99%的头文件缺失问题。 ### 相关问题 1. 如何在Keil MDK中管理多级目录的头文件包含? 2. Keil编译出现 `undefined symbol` 错误如何解决? 3. 嵌入式项目中如何规范管理硬件抽象层(HAL)头文件? 4. Keil项目迁移到新电脑如何避免路径错误? [^1]: 建议将头文件放在较浅目录层级,避免Keil搜索失败问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值