VSCode搭建STM32 开发环境

  • 简介
  • 资源获取
  • 前期准备
  • 安装mingw
  • 安装OpenOCD
  • 安装gcc
  • STM32CubeMX生成代码
  • VScode设置
  • 编译代码
  • 下载代码
  • 使用jlink下载代码
  • 修改Makefile

简介

习惯了VScode的代码风格,借助STM32CubeMX+VScode完成对STM32的开发,同时可以使用STLINK下载代码

前期准备

  • 安装好了STM32CubeMX,并且安装了相应的库支持包
  • 安装好了STLINK驱动,以及其他相关驱动
  • 安装好了VScode并且安装了以下插件
Better C++ Syntax 用于分析C/C++语法
C/C++ 用于支持C/C++语法,以及go to Define相关操作
C/C++ Extension Pack 
C/C++ Snippets
Makefile Tools
Cortex-Debug
Cortex-Debug: Device Support Pack - STM32F1
debug-tracker-vscode
RTOS Views

安装mingw


  1. 点击安装,自定义好软件安装位置,等待下载相关支持包,如果下载较慢
    codesys 支持stm32_vscode

  2. 右键,选择Mark for installation 选中安装,最后全选
  3. codesys 支持stm32_c语言_02


  4. 全选后点击应用更改,然后点击确定,等待下载所需要的包
  5. codesys 支持stm32_c语言_03


  6. 等待下包
  7. codesys 支持stm32_stm32_04

  8. 安装成功后将bin目录下的mingw32-make.exe 重命名为make.exe
  9. 将mingW 位置加入环境变量,我安装的路径是D:\MinGW\bin,加入成功后打开cmd 输入make -v 打印出版本号就是安装成功

安装OpenOCD

  1. 将文件中的OpenOCD 拷贝到一个目录,我这里拷贝到mingW的安装目录下,新建了一个工具文件夹
  2. OpenOCD的bin文件夹和share\openocd\scripts加入环境变量,如图所示
  3. 在cmd命令中输入openocd -v打印版本号后即安装成功

安装gcc

  1. 将资源中的gcc-arm-none-eabi-10.3-2021.10-win32.zip 拷贝到一个目录并解压,这里我拷贝到mingw目录下的tool文件夹内
  2. gcc-arm-none-eabi-10.3-2021.10-win32\Arm-GNU-Toolchian\bin加入环境变量,如图所示
  3. 在cmd 中输入**arm-none-eabi-gcc -v **打印gcc版本信息即是安装成功

    注意:如果增加环境变量后 -v命令并没有输出,请确保两个地方的环境变量中的Path路径都加上了,再一个重新打开下cmd试试

STM32CubeMX生成代码

前面配置部分按照需要配置,在工程管理中,此处选择Makefile

codesys 支持stm32_stm32_05

VScode设置

生成的文工程文件如图所示,空白处点击右键,选择意VScode打开

codesys 支持stm32_vscode_06


打开设置,输入make 搜索,在make path处选择路径为make(因为前面已经把mingw32-make改名为make,如果没改名,则依旧使用mingw32-make)

codesys 支持stm32_stm32_07

编译代码

在终端处,选择新建终端

codesys 支持stm32_codesys 支持stm32_08

在打开的终端中输入make 等待编译成功,编译成功会显示生成hex文件的地址

codesys 支持stm32_stm32_09

下载代码

我使用STLINK 下载代码,在makefile中配置下载代码
新增加flash 命令如下,我使用的是stm32f103c8t6 ,所以是target/stm32f1x.cfg 后面的.cfg文件根据自己使用的板子修改,源文件路径在openocd\scripts\target 文件夹中,此文件夹前面已经加入到环境变量中了。

flash:
	openocd -f interface/stlink-v2-1.cfg -f target/stm32f1x.cfg -c "program $(BUILD_DIR)/$(TARGET).elf reset exit"

为了将编译和下载命令合为一体,新增以下命令,含义是先编译,后自动下载

download:$(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin
	openocd -f interface/stlink-v2-1.cfg -f target/stm32f1x.cfg -c "program $(BUILD_DIR)/$(TARGET).elf reset exit"

所以我们编译所用到的命令如下

make 只编译不下载
make flash 下载编译好的文件
make download 编译并下载

使用jlink下载代码

上面是使用STLINK下载的代码 如果换成了jlink 则需要做以下修改

  1. 找到openocd的配置文件,复制一份jlink.cfg 并命名为jlink_swd.cfg 由于jlink默认连接方式为JTAG,所以在这需要做一下修改
  2. 打开文件做以下修改 主要是将传输模式改成了swd 以及连接速度设置为500KHZ
#
# SEGGER J-Link
#
# http://www.segger.com/jlink.html
#

adapter driver jlink

transport select swd

# add speed config
adapter speed 500

# The serial number can be used to select a specific device in case more than
# one is connected to the host.
#
# Example: Select J-Link with serial number 123456789
#
# jlink serial 123456789

  1. 使用openocd下载会提示找不到jlink,是因为jlink驱动被识别为USB驱动而不是串行驱动 所以需要做一个转换,下载zadig软件 zadia下载链接
  2. codesys 支持stm32_codesys 支持stm32_10


  3. 打开软件 options->List All Devices 选择jlink

    点击按钮,等待替换完成

修改Makefile

flash:
	openocd -f interface/jlink_swd.cfg -f target/stm32f1x.cfg -c "program $(BUILD_DIR)/$(TARGET).elf reset exit"

测试一下 下载成功

codesys 支持stm32_codesys 支持stm32_11