seb*_*ock 6 arduino arduino-uno visual-studio-code
我最近开始为Arduino开发。最初,我使用Arduino IDE,但很快就意识到它没有达到标准。由于不时需要重新启动IDE,因此开发速度大大降低。我找到了我喜欢的Arduino扩展与VS Code。但是我有几个问题,我不确定如何解决。
首先,vs代码引发#include错误,并要求我更新IntelliSense。但是,它可以构建/上载并完美运行,还可以找到在include中定义的类等,因此在某种程度上看起来像是误报(例如,路径包含在includePath设置中)。读取错误消息还表明,查找在Arduino.h中引用的名为“ avr / pgmspace.h”的标头存在问题。我不确定这些错误是否相关。pgmspace.h在任何地方都找不到(它应该已经包含在Arduino SDK中)。
最后,由于#include错误,与该特定头文件有关的所有内容均不会正确突出显示,而只是纯灰色文本,这有点令人讨厌。
有人知道如何解决这个问题吗?我在Mac上。
接受的答案对我不起作用。找不到或创建 c_cpp_properties.json 文件。另外,我希望它是全局的,而不仅仅是一个项目/工作区/文件夹。
因此,对于 VSCode 1.14 (2019),我只需导航到 settings.json (全局的),然后添加以下 json 部分:
"C_Cpp.default.includePath": [
    "C:/Program Files (x86)/Arduino/libraries/**",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino/**",
    "C:/Program Files (x86)/Arduino/hardware/tools/avr/avr/include/**",
    "C:/Program Files (x86)/Arduino/hardware/tools/avr/lib/gcc/avr/5.4.0/include/**",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/variants/standard/**",
    "C:/Users/<YOUR USERNAME>/.platformio/packages/framework-arduinoavr/**",
    "C:/Users/<YOUR USERNAME>/Documents/Arduino/libraries/**",
    "{$workspaceFolder}/libraries/**",
    "{$workspaceFolder}/**"
],
"C_Cpp.intelliSenseEngine": "Tag Parser"
Run Code Online (Sandbox Code Playgroud)
发布了另一个答案,其中包含整个过程以及有关该方法的所有详细信息:Visual Studio Code includePath
更新:不需要安装其他库。IntelliSense只能使用Arduino应用程序安装的标头进行操作,但其他一些方法可能会有所帮助。下面有更多更新。
VSCode构建时,将使用SDK。但是,IntelliSense无法读取SDK文件进行操作(据我所知),这会引发这些烦人的错误并消除大多数代码完成功能。
双方includePath并browse.path需要进行配置。includePath不包括递归(但该功能似乎即将推出)。browse.path是递归的,但是includePath对于IntelliSense功能,仍然必须包含头文件的确切位置。browse.path将使用Tag Parser提供诸如“灯泡”之类的工具,您可以单击这些工具来帮助解决includePath问题。(来源:c_cpp_properties.json中的“ includePath”和“ browse.path”之间有什么区别?)
avr/pgmspace.h位于:/Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/avr/pgmspace.h。它编码为avr/pgmspace.h; 因此,我们需要包含其所在的路径avr。
"includePath": [
    "${workspaceFolder}/libraries",
    "/System/Library/Frameworks/Kernel.framework/Versions/A/Headers",
    "/Applications/Arduino.app/Contents/Java/libraries",
    "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include",
    "/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/standard"
],
"browse": {
    "limitSymbolsToIncludedHeaders": false,
    "path": [
        "/System/Library/Frameworks/Kernel.framework/Versions/A/Headers",
        "/Applications/Arduino.app/Contents/Java/"
    ]
},
"forcedInclude": [
    "/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h"
],
Run Code Online (Sandbox Code Playgroud)
修改includePath如下:
"includePath": [
    "{$workspaceFolder}/libraries",
    "C:/Program Files (x86)/Arduino/hardware/tools/avr/lib/gcc/avr/5.4.0/include",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/variants/standard",
    "C:/Program Files (x86)/Arduino",
],
Run Code Online (Sandbox Code Playgroud)
如果可以获得任何缺少的库的版本,则可以将include 放入libraries项目的文件夹中。确保适当地命名库的名称空间,例如。我尚未测试此方法。includePath"${workspaceFolder}/libraries"libraries/avr/pgmspace.h
更新:
vscode-arduino在Windows 10上不需要库下载的工具。来源和其他技巧:使用Visual Studio Code启用Arduino Intellisense
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           4236 次  |  
        
|   最近记录:  |