数码营电子:基于微型控制器的编程、电路设计与电子产品制做。邮箱:shumaying@hotmail.com

Configuring Visual Studio Code for Arduino Development

From 数码营电子实验室
Jump to navigation Jump to search

准备工作[edit]

  1. Download Visual Studio Code and install it.
  2. Download Arduino IDE, and install it.
  3. 安装Arduino extension:打开 Visual Studio Code,单击界面左下角的 Manage > Extensions > Search Extensions in Marketplace > "Arduino for Visual Studio Code" by Microsoft。之前已经安装过:C/C++ extension by Microsoft。
  4. 设置使用Arduino extension的参数。单击:Manage > Settings,搜索:Arduino。将Arduino:path 设置为Arduino IDE 在本机的安装路径:
 C:\Program Files (x86)\Arduino (for Windows)
 /home/yourname/arduino-1.8.12 (for Linux)

Arduino VisualStudioCode -1.png

Arduino VisualStudioCode -2.png

如果这里设置错误,后面编译时会提示错误:

Arduino VisualStudioCode.png

创建、编译Arduino程序[edit]

第一步,按F1键(或者:Ctrl+Shift+p),在弹出窗口里,搜索:Arduino,在列表选项里,选择:Arduino:Initialize。

  • 此时,系统会提示:no .ino file was found on workspace, initialize sketch first (Press 'Enter' to confirm or 'Escape' to cancel)。这个时候,在提示框里输入新建文件:blicktest.ino,回车确认,创建新文件。
 提示:
 1. 如果此前没有文件夹,要先建一个文件夹,作为当前的workspace。
 2. 如果机子里存有.ino文件,在UBuntu上会被自动识别出来,显示在左边的“EXPLORER”边框内。
  • 点击一下页面右上角的“verify”,如果通过,就会在左侧自动生成“.vscode”文件夹。
  • 同时,系统自动生成文件:arduino.json(在.vscode文件夹里),并且在界面右下角出现悬浮文字:The workspace is initialized with the Arduino extension support.
  • 如果已经通过添加文件的方式,在项目目录树里面创建*.ino文件,则不会提示新建文件。
  • 可以在后续下拉列表里选择Arduino 板型。或者,在当前的VScode界面最下端,出现蓝色背景的选项。单击选择Arduino 板型:Arduino/Genuino Uno。此时,系统自动生成文件:c_cpp_properties.json。

Arduino VisualStudioCode -3.png

  • 打开arduino.json 文件,添加以下属性值,作用是使用已经编译过的文件,加快编译速度,也可以找到需要调试的已生成的二进制文件。(不加这句也行,待后边熟悉了,优化的时候再加。)
"output": ".\\build"

打开blicktest.ino 文件,粘贴以下代码:

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}
  • 现在编译文件blicktest.ino,在当前的Arduino 格式下,build 变成了:verify。编译完成后,系统自动生成:build文件夹,跟.vscode文件夹在同一级目录下。
  • 连接硬件,设置串行端口(上述选择板型的方法)。上载文件到Arduino 板,观察程序运行结果。

Debug Arduino 程序[edit]

第一步,安装 avr-debugger 库文件。[edit]

第二步,给 blicktest.ino 程序添加 avr-debugger 支持。[edit]

  • 在VScode里面,按F1键,在弹出的下拉列表里面选择:Arduino:Library Manager 。搜索:avr-debugger。搜索结果显示该库文件:“installed”。鼠标拖至最后,点击:Include Library。可以看到,在blicktest.ino文件顶部已经自动添加:
#include <app_api.h>
#include <avr8-stub.h>
  • 在setup()函数里面,调用函数:debug_init(),作用:Initialize the debug driver。
void setup() {
  // initialize the debug driver。
  debug_init();
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}
  • 保存文件,编译(verify)代码,结果正常。

第三步,在 Debug 过程中,关闭优化(Optimization)功能。[edit]

  • 打开前面安装的 avr-debugger 文件夹,复制文件:platform.local.txt,粘贴至 Arduino IDE 在本机的安装目录下的avr文件夹内,默认安装路径为 C:\Program Files.(x86)\Arduino\hardware\arduino\avr\ 。

第四步,创建launch.json 文件,配置 Launch 参数,告知 VScode 如何运行需要调试的代码。[edit]

  • 在菜单栏里,点击:Debug->Start Debugging,在弹出的窗口里,选择:C++(GDB/LLDB),继续选择:Default Configuration。注意:不要选择第一项:Arduino。该项设置仅适合于自带调试接口电路的Arduino板。
  • 此时,在项目文件列表的 .vscode文件夹里,自动生成文件:launch.json。修改该文件内下列几项内容:
"program": "${workspaceFolder}/build/blicktest.ino.elf",  

注意:blicktest.ino.elf 文件的名字需要修改为当前要debug的文件名。

"miDebuggerPath": "C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr\\bin\\avr-gdb.exe",

添加属性:

"miDebuggerServerAddress": "\\\\.\\COM15",

注意:此处的COM3需要修改为当前实际使用的测试端口。

将 "setupCommands"属性,设置为:

"description": "Remote debug enable",
"text": "-gdb-set debug remote 1",
"ignoreFailures": false

保存 launch.json 文件。调试工作准备完毕。

第五步:开始调试。[edit]

  • 编译,上载代码到 Arduino 板上。
Qrcode for gh a3b9e9962ce8 1280.jpg