相对于IAR和Keil上世纪水平的代码编辑器,巨硬出品的VSCode简直就是太香了,可惜毕竟不是专门为嵌入式开发设计的,不一翻折腾也就只能当当代码编辑器用,要编译调试软件还是得打开IAR,每次写stm32还得在两个软件直接来回切换,多少有点麻烦,于是这几天花点时间好好研究了下VSCode的各种插件,总算可以只依靠VSCode实现编写+编译+调试的一条龙服务了,我觉得有必要写这篇文章整理一下,一方面是可能能为有相同需求的人提供点参考帮助,另一方面就是我这个人实在记性不怎么样,指不定哪天就要靠这篇文章来自己教自己了(笑~,这才是主要原因)。
笔者假设看到这篇文章的人已经在电脑上装好了VSCode、IAR、STM32CubeMX、STLink驱动这些东西,并且有基本的使用经验,如果没有装好,可以参考下别人的博客先把他们装好,并且查查基本用法,再回过头来看这篇文章。
一、解决代码编写和编译问题
首先需要解决的是怎么在VSCode下愉快的编写代码并且把调试用的目标文件编译出来。这个还是比较简单的。
首先给VSCode安装两个插件:
- C/C++,这个插件主要提供对C/C++语言的自动补全、函数跳转、动态语法检查等功能,一般使用VSCode写C/C++代码的开发者都会装它。
- IAR For Visual Studio Code,这个插件用于解决编译问题,它会根据IAR工程内的配置文件来自动生成VSCode的相关配置文件,同时还可以在VSCode内调用IAR的编译工具来编译打开的工程。
接下来这些步骤,是每次使用VSCode打开新工程时需要做的,只需要在第一次打开新工程时配置就好了。直接在使用STM32CubeMX生成的IAR工程文件夹右键使用VSCode打开。
第一次打开工程时, IAR For Visual Studio Code 插件会自动扫描工程内的IAR配置文件,并自动在.vscode目录内生成c_cpp_properties.json以及iar-vsc.json这两个配置文件,前者主要是定义了各种IAR特有的宏以及工程的头文件包含目录,使得C/C++插件的代码补全、函数跳转等功能可以正常工作;后者主要配置了IAR编译工具链所在的目录以及工程的ewp配置文件所在目录,保证编译工作的正常进行。如下图所示:
一般来说是不会出问题的,谨慎点的话可以检查下iar-vsc.json下的对应各个目录是不是正确。
按Ctrl+Shift+P快捷键调出命令窗口,配置下生成任务,如下图所示:
此时会在.vscode目录下生成tasks.json,里面是编译相关的配置,如下图所示:
一般来说,这之后直接按Ctrl+Shift+B快捷键就可以编译当前工程了,如果没有报错的话,此时