首页 > 解决方案 > 无法在 Windows 10 上使用 Visual Studio Code 打开源文件 avr/io.h(hal.h 的依赖项)

问题描述

我想使用 stm32F0(基于 arm)和 VS Code 来实现一个嵌入式项目。该项目在其他系统上正常运行。

  1. 我向 Visual Studio 添加了 C/C++ 扩展
  2. 我为 cortex-m0 arm 安装了一个编译器:GNU Arm Embedded toolchain/gcc arm for windows。
  3. 安装的 Makefile:二进制文件 + 依赖文件
  4. 已安装 openOCD(打开片上调试器)
  5. tasks.json(构建指令)、c_cpp_properties.json(编译器路径和 IntelliSense 设置)已创建。我修改了包含路径,因为我的程序包含不在我的工作区中的头文件,并且不在标准库路径中。

c_cpp_properties.json 文件

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**" ,
                "C:\\Users\\lib\\chibios\\ChibiOS-313416b8fda90d9973a749a0a35970956852c286\\os\\hal\\include",
                "C:\\Users\\lib\\chibios\\ChibiOS-313416b8fda90d9973a749a0a35970956852c286\\os\\common\\ports\\ARM\\compilers\\GCC",
                "C:\\Users\\lib\\chibios\\ChibiOS-313416b8fda90d9973a749a0a35970956852c286\\os\\nil\\include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "E:\\tools-vs\\gcc-arm-none-eabi-10-2020-q4-major\\bin\\arm-none-eabi-g++", 
            "cStandard": "gnu11",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "gcc-arm",
            "browse": {
                "path": [
                    "E:\\tools-vs\\gcc-arm-none-eabi-10-2020-q4-major\\lib\\gcc\\arm-none-eabi\\10.2.1\\include"
                ]
            }
        }
    ],
    "version": 4
}

添加这些路径后,我仍然遇到错误:

#include 检测到错误。请更新您的 includePath。此翻译单元已禁用 Squiggles

无法打开源文件“avr/io.h”(“hal.h”的依赖项)

由于嵌入式项目有很多库和依赖项,因此无法一一添加依赖项的路径。在为一个依赖解决并添加路径后,应该还有另一个错误。

另一个问题是我什至无法在目录中自己找到依赖项avr/io.h。

我之前在其他项目中使用过 Keil。当我编译代码时,它自己调用了所有依赖项。在编译之前,我没有看到树部分的依赖关系或头文件依赖关系的任何错误。

非常感谢任何命令或有用的资源,提前。

标签: embeddedvscode-settings

解决方案


无法打开源文件avr/io.h(hal.h的依赖)

您似乎正在使用 ChibiOS,其中有一个文件 hal.h,其中包括 halconf.h,其中包括 mcuconf.h。显然,您似乎有一个 ChibiOS 的 AVR 端口,您需要 STM32 或 ARM Cortex-M 支持。

但是,VS Code 如何在编译之前找到依赖关系呢?

与编译器/预处理器一样,通过配置包含路径、解析项目文件并考虑任何外部定义的(命令行)宏。

我也想知道是否应该在VS Code的配置文件中添加main.cpp文件和其他C和CPP文件的路径来解决这些问题?

我相信它无论如何都会解析项目文件。它只需要找到源文件中包含的头文件,为源文件的解析提供上下文。

对于调试,我在列表中看不到任何调试器,尽管我安装了 openOCD 并在环境变量中添加了路径

这是一个完全不同的问题 - 为此发布一个新问题。


推荐阅读