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
- 点击安装,自定义好软件安装位置,等待下载相关支持包,如果下载较慢
- 右键,选择Mark for installation 选中安装,最后全选
- 全选后点击应用更改,然后点击确定,等待下载所需要的包
- 等待下包
- 安装成功后将bin目录下的mingw32-make.exe 重命名为make.exe
- 将mingW 位置加入环境变量,我安装的路径是D:\MinGW\bin,加入成功后打开cmd 输入make -v 打印出版本号就是安装成功
安装OpenOCD
- 将文件中的OpenOCD 拷贝到一个目录,我这里拷贝到mingW的安装目录下,新建了一个工具文件夹
- OpenOCD的bin文件夹和share\openocd\scripts加入环境变量,如图所示
- 在cmd命令中输入openocd -v打印版本号后即安装成功
安装gcc
- 将资源中的gcc-arm-none-eabi-10.3-2021.10-win32.zip 拷贝到一个目录并解压,这里我拷贝到mingw目录下的tool文件夹内
- 将gcc-arm-none-eabi-10.3-2021.10-win32\Arm-GNU-Toolchian\bin加入环境变量,如图所示
- 在cmd 中输入**arm-none-eabi-gcc -v **打印gcc版本信息即是安装成功
注意:如果增加环境变量后 -v命令并没有输出,请确保两个地方的环境变量中的Path路径都加上了,再一个重新打开下cmd试试
STM32CubeMX生成代码
前面配置部分按照需要配置,在工程管理中,此处选择Makefile
VScode设置
生成的文工程文件如图所示,空白处点击右键,选择意VScode打开
打开设置,输入make 搜索,在make path处选择路径为make(因为前面已经把mingw32-make改名为make,如果没改名,则依旧使用mingw32-make)
编译代码
在终端处,选择新建终端
在打开的终端中输入make 等待编译成功,编译成功会显示生成hex文件的地址
下载代码
我使用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 则需要做以下修改
- 找到openocd的配置文件,复制一份jlink.cfg 并命名为jlink_swd.cfg 由于jlink默认连接方式为JTAG,所以在这需要做一下修改
- 打开文件做以下修改 主要是将传输模式改成了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
- 使用openocd下载会提示找不到jlink,是因为jlink驱动被识别为USB驱动而不是串行驱动 所以需要做一个转换,下载zadig软件 zadia下载链接
- 打开软件 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"
测试一下 下载成功