配置VS Code 开发STM32【宇宙&最强编辑器】

发布时间:2023-03-23  

一.前言

  自从看了稚晖君几期视频之后,感觉自己就对他的才华着了魔;稚晖君的大多数项目里边都在用STM32单片机,正好自己也在自学STM32单片机。从他的视频中看到,稚晖君开发STM32用的IDE居然不是Keil,而且界面也挺好看,后来去搜所发现稚晖君使用的CLion进行的开发,并且在稚晖君的知乎也有对CLion开发STM32环境进行配置的文章(稚晖:配置CLion用于STM32开发【优雅の嵌入式开发】)。于是,我也想着学一下使用CLion来开发STM32;当我下载好CLion准备大展身手的时候,忽然发现CLion是收费的,而且还是199刀一年;这让本就不富裕并且喜欢白嫖的我选择直接放弃。
  后来,在B站、CSDN等平台忽然发现一款被称为宇宙最强编辑器的VSCode也可以用来开发STM32,并且是免费使用的。经过翻看各种文章,以及花费自己一天的时间,最终是完成了VSCode的环境配置,实现了编译、下载、调试等功能,并写下此文章作为学习总结。
  本次介绍的是VSCode+STM32CubeMX来进行STM32的开发,使用的是HAL库,CubeMX软件以及HAL库的优点就不再做介绍了;接下来,准备开干~

二.软件工具下载及环境配置

1.Visual Studio Code:
  直接在微软官网下载最新版软件:visualstudio.microsoft.com

2.STM32CubeMX:
直接在ST的官网下载最新软件:STM32CubeMX - STMicroelectronics

3.MinGW
  VSCode需要使用MinGW的make命令来编译代码,到MinGW的主页下载Windows版本的安装器。下载地址:Minimalist GNU for Windows

MinGW安装器下载

  下载好后进行安装,并且记住安装的位置,下面会用到。

MinGW安装路径

  安装完成在安装目录下找到文件夹,将bin文件的路径复制下来。

复制Bin文件夹路径

  然后将bin文件夹的路径添加进环境变量中

搜所环境变量

选择环境变量

选择Path并编辑

将MinGW添加进环境变量

  最后点击所有的确定完成配置。
  打开命令终端,输入make测试安装结果。

make测试

  可以看到,命令端提示无法识别make命令;这是因为在MinGW的Bin文件下,make命令的全称为mingw32-make,为了方便,将该可执行程序复制一份,修改名称为make。

将mingw32-make复制重命名make

  然后重新输在终端重新输入make进行测试,这时候没有红色报错,就表示成功搭建。

再次测试make

4.arm-none-eabi-gcc
arm gcc是编译的工具链,Windows版下载地址:Arm GNU Toolchain | GNU Arm Embedded Toolchain Downloads – Arm Developer;直接下载zip格式的就行,免得安装。

下载arm gcc

  将其解压出来后放在C盘根目录下(也可以放在其他地方),然后同样的复制bin文件的路径添加到环境变量中

将arm gcc添加进环境变量

5.Openocd
openocd是用于对STM32进行下载和仿真的工具,是一个开源软件包。Windows下载地址:Download OpenOCD for Windows

openocd下载界面

  将其解压出来后放在C盘根目录下(也可以放在其他地方),然后同样的复制bin文件的路径添加到环境变量中

将openocd添加进环境变量

三、VSCode插件安装

  在VSCode中安装如下插件

插件安装

1.C/C++

  用于代码高亮显示以及自动补全等功能。

2.Cortex-debug

  用于调试STM32的插件

3.Chinese(Simplified)简体中文

  VSCode显示为中文界面,当然,如果你英语比较好,可以不用安装。

四、利用CubeMX将工程生成为Makefile

  这里就不在讲述CubeMX如何来配置STM32单片机这些内容了

CubeMX生成Makefile

五、VSCode配置

  用VSCode打开CubeMX生成的工程文件。

1.C/C++编辑配置

  按住快捷键 Ctrl + Shift + P ,选择 C/C++:编辑配置(UI),将编译器路径改为gcc.exe,将IntelliSense 模式改为Windows-gcc-arm

  这时会在文件夹中自动生成一个.vscode文件夹,打开文件夹中的c_cpp_properties.json文件(这就是C/C++:编辑配置(UI)生成的文件)。将头文件路径和对应单片机的宏定义写在如图所示的地方。

  不同型号的单片机宏定义不太一样,可以在MakeFile文件中查看。注意:添加到宏时记得将-D去掉,不是在Makefile中去掉-D。

单片机宏定义

2.程序编译

  编译程序可以在VSCode终端输入make进行编译,编译完成后会生成一个build文件夹,里面包含了.hex .elf和.bin文件。

输入make编译

编译完成

3.程序下载

  在终端输入命令openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg -c "program build/VSCodeF4.hex verify reset exit"即可下载程序。

程序下载命令

  关于下载器stlink.cfg和stm32f4x.cfg两个文件C:OpenOCDshareopenocdscripts文件夹中可以找到

配置文件路径

4.使用任务进行编译和下载

  a.编译工程:按Ctrl+Shift+P,搜索task任务配置,选择配置任务,然后选择C/C++:gcc.exe生成活动文件

配置任务

C/C++:gcc.exe生成活动文件

  进入tasks.json文件,删除和修改文件至如下图所示。

编译任务

  b.程序下载:将编译任务复制一份,修改内容如下图所示。

程序下载任务配置

  最后,在终端-运行任务,就可以看到配置的任务,选择相应的任务即可。

任务运行

5.调试

  在VSCode中实现像Keil那样的调试,需要配置调试文件,点击左侧调试按钮。选择创建launch.json文件.

创建文件

  然后选择自己的工程文件,再选择C++(GDB/LLDB),再选择默认配置。

  创建完成后打开文件,删除如图所示内容,不要删多了。

  接着点击右下角添加配置

添加配置

  选择Cortex Debug: OpenOcd

  增加和删除内容如下图所示。

  SVD文件为单片机寄存器文件,加入这个文件才可以再调试时看寄存器的值,寄存器值变化可见需要在程序中打断点,才能看到寄存器值的变化。

  关于stm32单片机的svd文件,可在keil的芯片包安装路径下找到。(安装了keil以及芯片包才能找到)

svd文件位置

六、支持C++编译

  C++的编译需要修改Makefile文件。

  1.添加CXX_SOUURCES

  2.在GCC_PATH下添加如下两句代码(复制修改即可)

  3.增加入下图三句代码(复制修改即可)

  4.在该语句中间插入红框所示内容

  5.增加C++的.o编译

  经本人测试,修改了Makefile文件后,用CubeMX重新生成工程的时候,不会覆盖Makefile中修改和增加的内容;所以,不用担心配置的支持C++的代码会被覆盖掉。

七、总结

  1.VSCode开发STM32,在界面上优于Keil太多了,但是在调试上赶不上keil,建议可以配合keil一起使用。

  2.开发环境的搭建稍微有那么一点点繁琐,新手谨慎。

  3.对于C++的支持,还是CLion要爽一些,CLion不需要自己去修改文件,只需要将需要编译的cpp文件包含进CMakeLists.txt文件就行,而VSCode中则需要增加和修改Makefile文件的内容,较为繁琐。

  4.对于我个人说,用起来还是挺顺手的,重点是免费,开源万岁。

  5.对于printf函数,keil重写比较简单,VSCode和CLion都比较复杂,可以参考其他的大佬的文章,这里我没有做研究

  5.若想使用CLion开发STM32,可参考稚晖君知乎文章。在开头有链接,或者直接关注稚晖君知乎。

  6.有空了B站出个此文章的视频。记性不好,写点文章做总结。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>