首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在windows 10上使用Visual代码打开源文件avr/io.h (依赖hal.h)

无法在windows 10上使用Visual代码打开源文件avr/io.h (依赖hal.h)
EN

Stack Overflow用户
提问于 2021-05-27 04:28:49
回答 3查看 1.4K关注 0票数 1

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

在visual中添加了C/C++扩展,为windows.

  • Makefiles安装了一个编译器-M0 arm: GNU嵌入式工具链/gcc arm用于安装:二进制文件+依赖关系文件

  • openOCD已安装(打开片上Debugger)

  • tasks.json (编译指令)、c_cpp_properties.json (编译器路径和IntelliSense设置))。我修改了包含路径,因为我的程序包含的头文件不在我的工作区中,而且不在标准库路径中。

c_cpp_properties.json文件

代码语言:javascript
复制
{
    "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
}

添加这些路径后,仍然会出现错误:

#包括检测到的错误。请更新您的includePath。此翻译单元无法打开源代码文件"avr/io.h“(依赖于"hal.h"),因此禁用了Squiggles。

由于嵌入式项目有大量的库和依赖项,所以不可能一个一个地添加依赖路径。在解决并为一个依赖项添加路径后,应该会出现另一个错误。

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

我以前曾在其他项目中使用过Keil。当我编译代码时,它会自动调用所有依赖项。在编译之前,我没有看到树节上的依赖项,也没有看到头文件依赖项的任何错误。

但是,VS代码在编译之前如何找到依赖项呢?我还想知道我是否应该在VS代码的配置文件中添加一个main.cpp文件和其他C和CPP文件的路径来解决这些problems?

  • For调试问题,虽然我安装了openOCD并在环境变量

中添加了路径,但列表中没有任何调试器。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-04 20:08:05

谢谢你的回答。

使用visualGDB代替visualGDB的gcc-arm-none-eabi)

  • adding

  • 使用正确的工具链(GCC:从sysProgs到VS

  • 的visualGDB插件,具有IntelliSense配置(VS中的扩展在检查默认位置后查找路径&使用我们在pc上的编译器配置IntelliSense )。如果包含文件中有错误,可以编辑IntelliSense以告知编译器所在的C++扩展名,并包含头文件。但是visualGDB会自动找到它们)

  • 包含路径、项目

  • 和重新扫描解决方案

所有这些步骤为我解决了这个问题。

票数 -2
EN

Stack Overflow用户

发布于 2021-05-27 13:45:59

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

您似乎在使用ChibiOS,它有一个包含halcon.h的文件hal.h,其中包含mcucon.h。显然,您似乎有一个AVR端口的ChibiOS,您需要STM32或ARM的皮质-M支持。

但是,在编译之前,VS代码如何找到依赖项呢?

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

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

我相信它在任何情况下都会解析项目文件。它只需要找到源文件中包含的头文件,就可以为解析源文件提供上下文。

对于调试,我没有在列表中看到任何调试器,尽管我安装了

并在环境变量中添加了路径

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

票数 1
EN

Stack Overflow用户

发布于 2021-05-27 15:05:53

您有8位AVR微控制器的代码,并尝试使用ARM工具链直接编译它。这是行不通的。您将需要重写此程序(不仅包括,而且几乎包括所有内容。中断处理程序、寄存器,甚至硬件架构也不同(Harvard/von )。

对于初学者来说,这是不可能的任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67715691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档