告别简陋,让Arduino开发变得高大上——MS VSCode体验

转载自:https://www.21ic.com/evm/trick/201709/737533.htm
作者:SANTURN 来源:21ic 侵权请联系删除

Arduino和VSCode漫谈

有人说,Arduino是当之无愧的宇宙第一开发板!RPI(树莓派)的拥护者可能已开始准备扔鸡蛋了。不过依笔者的经验,对于一个非电子或嵌入式软件专业人员来说,Arduino的入门显然比RPI要快!其实关于二者的优劣,口水仗已打过不少,按照伟大的Q哥的想法:喜欢谁就是谁!不纠结,动起来才是王道。

今天的主题不是口水仗,只是为了让Arduino更好用,告别简陋的Arduino IDE,使用高大上的VSCode来进行软件开发。

在这里插入图片描述

笔者多年前就接触过Arduino,对其设计理念是非常赞同的。只是使用Arduino IDE的时候,感觉非常不爽,总想着哪一天官方能推出一款更好的集成开发环境,那样就更完美了。可惜的是,直到今天,Arduino的IDE依旧是那么朴素,没有代码提示,没有调试功能。要知道,这些特性是一个伟大的IDE应该具备的特性啊。

VSCode是MS(微软)推出的一款编辑器,就是编辑器,不是IDE!

VSCode的全称是Visual Studio Code,源自MS大名鼎鼎的Visual Studio开发套件,不过没有Visual Studio那么臃肿,继承了Visual Studio强大的代码编辑功能,具备代码补全、代码格式化等诸多编辑优点。

c3d5bc8140202a9877ec50858ef8c620_b.jpg

这个编辑器组件来自online editor Monaco,由坐镇苏黎世的Eric Gamma率领团队打造,typescript写就。VSCode小巧而实用,一经推出就备受好评。

我们都知道编辑器一般是不能编译代码的,不过MS为VSCode提供了诸多的extension即扩展插件,使得完全可以把它当作一个IDE来使用。其实这种作法在很多有名的编辑器中都早已采用,如Edit Plus,Notepad ++等。

从这里https://code.visualstudio.com/下载最新的VSCode并安装,这个过程不赘述。

启动VSCode后的画面如下

VS-2.jpg

现在的VSCode还是个编辑器,只能编辑文件,不能编译!毕竟工具链什么的都还没有配置。

VSCode支持非常丰富的插件类型,包括各种语言如c/c++、Python等,支持不同的硬件平台如Arduino、STM32、ESP32等,确是应有尽有。

拓展.jpg

VSCode中的Arduino支持

先来添加Arduino支持,如下

VS-3.jpg

需要安装什么插件,直接在搜索栏内输入内容,然后VSCode会列出一堆可供选择,上图中显示的是已安装好了Arduino扩展插件的情况,这个插件是MS官方推出的版本,目前版本号为0.2.6。

Arduino IDE安装和配置

要在VSCode中使用Arduino的功能,还需要下载安装Arduino,毕竟各种工具链及相关驱动及示例代码都是Arduino中提供的。

从arduino.cc下载最新的Arduino,本文测试时使用的是压缩包.zip格式,直接解压到指定的文件夹即可使用,如下

VS-4.jpg

双击arduino.exe文件检查程序运行是否正常。

需要注意的是Arduino的运行是需要JRE支持的,所以如果发现不能启动Arduino的话,需要检查是否安装了JRE运行环境。

默认的Arduino支持一些基本的Arduino硬件如UNO、MEGA2560等,如果需要三方支持的话,需要先安装底层的工具链等支持。

以Adafruit的Feather开发板为例,介绍如何在Arduino中添加硬件支持。

一般来说,支持Arduino开发的硬件平台,厂商都会指定相关的工具链及底层的支持包(BSP),例如为Feather添加支持,需要在Arduino的Preferences中指定如下的URL

VS-5.jpg
其中的url:

http://adafruit.github.io/arduino-board-index/package_adafruit_index.json

设置好URL之后,接下来需要在Arduino的Board Manager里添加具体的硬件支持,例如该Feather使用的MCU主控为Atmega32u4,那么就添加相应的支持包

VS-6.jpg

VSCode Arduino设置

你可能会觉得奇怪,不是用VSCode来作为开发环境么?怎么现在设置都是在Arduino里操作呢?

其实这个问题很好回答。记得我们前面介绍VSCode时说过,VSCode只是一个编辑器,把它当成IDE来使用的话,当然得先配置好Arduino本身。

配置好Arduino之后,接下来就是让VSCode感知到Arduino的存在,毕竟插件还没有智能到自动感知的地步。

VSCode与VS不同的地方在于:VSCode的配置文件都是使用JSON来进行配置,VSCode在启动的时候读取这些配置,然后就可以开始工作了。

VSCode进行系统参数设置的快捷键是Ctrl+,,打开后,搜索与Arduino相关的设置,如下

VS-7.jpg

如图所示,在设置界面中先输入arduino,与Arduino相关的设置都会显示,然后在右边的用户设置中修改具体的用户值,用户设置的参数会覆盖系统默认的参数。

这里最关键的一个参数就是Arduino所在的位置,直接指定Arduino所在的位置即可。

这样子设置之后,VSCode应该可以使用Arduino来进行开发工作了。

利用VSCode进行Arduino开发

新建一个简单的Arduino源文件test.ino,在里面输入如下内容

#include <Arduino.h>

void setup(){
    pinMode(13, OUTPUT);
}

void loop()
{
    digitalWrite(13, HIGH);
    delay(500);
    digitalWrite(13, LOW);
    delay(500);
}

玩Arduino板子的用户对这段代码应该是耳熟能详了,也不解释了。

接下来设置硬件的类型及上传代码用到的串口,这些设置可以使用命令面板(Command Palette)来设置,也可以使用快速方式,先体验下快捷方式设置,在VSCode窗口的右下角有选择开发板类型及串口的设置,如下

VS-8.jpg

先选择开发板类型,如下

VS-9.jpg

选择通信串口,如下

VS-10.jpg

接下来是编译,链接及上传代码到开发板。

除了设置开发板类型及通信串口外,其它与Arduino相关的操作如代码编译,上传等功能,都只能通过命令面板提供的命令来进行了。

打开命令面板的快捷键是Ctrl+Shitp+P,也可以使用功能键F1来完成命令,打开后的命令面板大致如下

VS-11.jpg

可以看到以Arduino打头的命令都是与Arduino操作相关的,如开发板管理,串口参数设置,编译及上传代码等功能,先看下Arduino: Upload的功能,该命令是将当前代码编译并上传到目标板。可以使用Ctrl+Alt+U快捷键来完成操作,

操作过程中会看到类似如下的输出信息

Loading configuration...

Initializing packages...

Preparing boards...

Verifying...

Archiving built core (caching) in: C:\Users\netlh\AppData\Local\Temp\arduino_cache_554445\core\core_adafruit_avr_feather32u4_59d57194f9ece49e5f06a151099c183b.a

Sketch uses 4104 bytes (14%) of program storage space. Maximum is 28672 bytes.

Global variables use 149 bytes of dynamic memory.

Uploading...

[Done] Uploaded the sketch: sketch\test.ino

代码上传完成后,会看到开发板上的LED灯开始闪啊闪。

More:代码补全配置

VSCode本身有代码提示及补全功能,但是有个小小局限,只限于当前文件,略为不足。不过开源的代码补全插件还是有的,像大名鼎鼎的GTAGS,在VIM里用得非常之多。为了让VSCode更好用,当然得把GTAGS加进来。

先从http://adoxa.altervista.org/global/这里下载最新的安装包,安装或解压后,将该程序加入到用户路径PATH中,GLOBAL解压后提供的工具如下

VS-12.jpg

接下来就可以使用GTAGS来建立补全信息了。

Arduino本身包含若干库,这些库都位于Arduino安装目录之下,另外Arduino将用户建立文件默认放在Documents目录的Arduino子目录下,为了让GTAGS能建立全局的数据库文件,这里稍微修改了一下默认的Arduino目录参数,将用户创建的文件全部放到Arduino的sketch子目录下,方便GTAGS搜集信息,如下

VS-13.jpg

注意上图中的sketch用户代码子目录。

上图中的GPATH、GRTAGS及GTAGS文件都是使用GTAGS命令建立的索引文件,这些文件是在Arduino安装目录下执行GTAGS命令得到的结果

VS-14.jpg

由大多数LINUX命令一样,GTAGS命令执行后的静默输出表明代码执行成功,接下来就可以使用代码提示及代码补全命令了。

VS-15.jpg

上图是输入代码中的代码提示,可以使用TAB及ENTER来实现代码补全了。还有下面的代码提示,这酸爽啊

VS-16.jpg

再来看下如何使用Arduino自带的串口监视功能,就像Arduino一样,如下

VS-17.jpg

点击红色标记处的图标,就可以打开串口监视器。

最后一点,如果想要体验其它IDE中的调试功能,如代码单步、断点等,这个没办法。一是Arduino本身就没有提供这个功能,再者,要想实现在线调试,一个调试器是必不可少的,如ST有STLINK,ARM通用的JLINK,对不起,Arduino没有,也许Arduino程序本身一般比较简单,官方认为没有必要!

最后我还要偷偷摸摸告诉你你一个秘密:如果想看某个对象或类型的定义,按信ctrl键,然后在对象上点击一下,会有惊喜的

VS-18.jpg

上面是在Serial对象上按住Ctrl键再点击的效果图,是不是很酷!

作为比较,最后扔一张传统的Arduino的开发界面,是不是高下立判

VS-19.jpg

MS出品的东西,果然还是狠不错的。不过令人郁闷的是,MS的手机为啥总是扶不上墙?

猜你喜欢

转载自blog.csdn.net/weixin_45502929/article/details/108358942