Vscode 编译 开发 调试 STM32单片机
为什么记录这篇文章
本文基于使用windows10 系统,计划在VScode上集成开发、编译、烧录和调试一系列功能。
优快云以及网络上有很多介绍移植STM32到VScode 环境开发调试的文章,但是没有能够找到一篇能够完整的指导自己完成这个工作。所以这里完整记录自己的配置和使用过程。
由于现在软件版本和系统环境迭代变化很快,本人对stm32开发环境不够熟悉,所以一边学习一边操作,亲自做一遍,把步骤和遇到的问题记录下来,供自己日后查阅,也能方便有需要的朋友参考。
环境准备
软件及工具下载
点击软件名称进入官网下载链接,本文使用软件皆为windows平台
- STM32CubeMX 用于生成stm32的工程模板和makefile文件;
- Java SE Runtime Environment 8 STM32CubeMX运行依赖环境,安装STM32CubeMX的前置;
- Visual Studio Code 强大的IDE工具,支持多种开发语言,具有丰富的插件。
- MINGW 看了很多文章都没有说明这个软件的目的,其实是提供了在windows系统中的make 命令,用来解析编译STM32CubeMX生成的makefile,而它同时安装的一些toolchain其实并没有使用到,容易造成误解。所以这里也可以直接换成make for windows。
- GNU Arm Embedded Toolchain windows版本的交叉编译工具链包括编译器(gcc),调试器(gdb),链接器(ld)和其它工具。建议下载安装版本,注意记录安装路径,后面需要用到。
- OpenOCD (Open On-Chip Debugger)开源的调试器,适配市面上大部分的调试器和mcu单片机芯片。本例中主要作为stm32的烧录工具和开启GDB server使用。
软件安装
-
STM32CubeMX
需要注意的是安装stm32需要依赖于JRE环境,在上面的地址提前下载安装JRE最新版本即可。
具体安装步骤可以参考 STM32CubeMX介绍、下载与安装 -
VScode
vscode安装完成后,需要另外安装上插件才能完成本文的工作(ARM和C/C++),同时也有一些推荐的插件建议一起安装上。在vscode中按下ctrlshiftx进入下载插件界面。
- ARM:使的ARM汇编代码获得语法高亮,这里主要用在启动文件上。
- C/C++:使VScode获得对C/C++语言的支持,包括智能提示,调试等。
- Intellisense:提供C++智能感知功能。
- Cortex-Debug:对ARM Cortex-M内核的单片机提供调试支持。
- Cortex-Debug: Device Support Pack -STM32F1(F4,L1):这三个芯片包分别对Cortex-Debug提供三款芯片的设备支持。
- GBKtoUTF8:因为平时的Keil的STM32工程文件大部分都是GB2312编码的,这个扩展可以自动将GB2312
- 转换为UTF-8编码。 LLVM :代码补全
-
MINGW
这个软件有个需要注意的地方,虽然我们需要mingw提供的make命令,但是这个软件并不提供make(狗头,好多文章都不提及这一点)。mingw提供的命令是mingw32-make.exe。
我们需要进入安装目录的bin目录下,复制mingw32-make.exe重命名为make.exe。
当然你可以不用重命名,然后再后面的vscode json脚本中需要make的位置填入mingw32-make。
-
openocd
运行opeocd需要指定interface和target下的一些配置文件,这和oopenocd.exe 不在同一个目录下面。所以再运行时候会报错 找不到对应的配置文件。
这里我直接将xx\OpenOCD-20201228-0.10.0\bin\
中的命令全部copy到\OpenOCD-20201228-0.10.0\share\openocd\scripts
下,并将后者路径添加了系统变量中。
其实后面我们在vscode中task json中调用的时候依然找不到配置文件,需要手动将使用到的配置文件拷贝到项目文件夹中。不过这里为了我们能在cmd.exe或者power shell中直接使用,建议这么做。 -
GNU Arm Embedded Toolchain
这里我并没有将arm toolchain 的命令加入系统变量中,原因是exe安装过程中会自己添加系统变量。
对于vscode,在makefile中会指定使用arm toolchain,而make的环境在vode code 的properties 中指定了,这个过程中没有涉及到windows的系统变量,足以找到。 -
添加系统变量
其他软件直接安装即可,需要注意的是记录下软件的安装目录。
其中openocd和MINGW需要将可执行文件目录添加到系统的环境变量中。
-
环境验证
在cmd终端或者power shell或者你又git bash中分别运行如下命令,可以正常打印版本信息没有报错。
arm-none-eabi-gcc -v
openocd -v
make -v
恭喜,环境安装完成,下面进入vscode的集成环境。
VScode功能搭建
使用STM32CubeMX生成带有makefile的工程
使用stm32CubeMX的最初目的是他可以生成makefile,不过使用下来发现,这个软件对于各种mcu 引脚以及时钟的配置非常人性化。
安装完成后,打开STM32CubeMX选择对应芯片类型,软件会自动下载所选择芯片的支持包。在列表中选中芯片,封装号要一致。
创建工程(本文重点是开发环境,若想了解具体了解,请看STM32CubeMX使