Windows下使用VScode编译烧录STM32工程代码:基于CMake

一、软件安装

已默认电脑上存在VScode,这里不讲述Vscode的安装。

涉及软件的安装配置:

  • 安装Cmake
  • 安装arm-none-eabi-gcc
  • 安装OpenOCD
  • MinGW
  • 安装VScode插件C/C++、CMake、Cortex-Debug

1.1 安装CMake
1.1.1 安装

下载地址:

https://cmake.org/download/

选择适合自己电脑的最新版本进行下载并安装


1.1.2 添加环境变量

我们需要将cmake的可执行文件的文件夹路径添加到环境变量,方便使用命令调用cmake,路径为:(CMake的安装路径,bin文件夹的路径)

X:\...\CMake\bin

将以上目录添加到系统环境变量中去。


1.1.3 验证

在终端输入以下命令,验证是否安装成功。

cmake


1.2 安装arm-none-eabi-gcc
1.2.1 安装

下载地址:

https://developer.arm.com/downloads/-/gnu-rm


1.2.2 添加环境变量

我们需要将arm-gcc的可执行文件的文件夹路径添加到环境变量,方便使用命令调用arm-gcc,路径为:(arm-none-eabi-gcc的安装路径,bin文件夹的路径)

X:\...\bin

我的路径是:D:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin

将以上目录添加到系统环境变量中去。


1.2.3 验证

在终端输入以下命令,验证是否安装成功。

arm-none-eabi-gcc


1.3 安装OpenOCD
1.3.1 安装

下载地址:

https://gnutoolchains.com/arm-eabi/openocd/

选择适合自己电脑的最新版本进行下载,直接下载的是压缩包文件,解压后可直接使用


1.3.2 添加环境变量

我们需要将OpenOCD的可执行文件的文件夹路径添加到环境变量,方便使用命令调用OpenOCD,路径为:(arm-none-eabi-gcc的安装路径,bin文件夹的路径)

X:\...\OpenOCD-20231002-0.12.0\bin

我的路径是:D:\Program Files (x86)\OpenOCD-20231002-0.12.0\bin

将以上目录添加到系统环境变量中去。


1.3.3 验证

在终端输入以下命令,验证是否安装成功。

openOCD


1.4 安装MinGW
1.4.1 安装

下载地址:

https://sourceforge.net/projects/mingw-w64/files/

选择适合自己电脑的最新版本进行下载,直接下载的是压缩包文件,解压后的mingw64可直接使用,我这里选择MinGW-W64GCC-8.1.0下的x86_64-posix-sjlj


1.4.2 添加环境变量

我们需要将make的可执行文件的文件夹路径添加到环境变量,方便使用命令调用make,路径为:

X:\...\mingw64\bin

我的路径是:D:\Program Files (x86)\mingw64\bin

将以上目录添加到系统环境变量中去。


1.4.3 验证

在终端输入以下命令,验证是否安装成功(由于Window下make执行程序为mingw32-make.exe)。

mingw32-make

   
1.5 在Vscode中安装插件

要安装的插件如下:

二、编译和烧录

2.1 编译前的准备

选用的工程是网友上传参考资料,如下:

链接:https://pan.baidu.com/s/1N4DI9GpaRnCr-4J0uCTTHw?pwd=wqfz
提取码:wqfz
--来自百度网盘超级会员V4的分享

首先把.vscode文件夹了json配置改掉,改成自己的路径和名称,编译就正常。

2.2 烧录

我是使用jlink的swd烧录,有点麻烦。进入build文件夹下执行以下命令,其中将Project.hex替换为自己的目标文件,stlink-v2.cfg是选择下载器类型,stm32f1x.cfg是芯片型号

openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "program Project.hex verify reset exit"

因为我的是jink下载器,那就照葫芦画瓢,改为

openocd -f interface/jlink.cfg -f target/stm32f1x.cfg -c "program Project.hex verify reset exit"

在vscode终端输入后发现不行,

Jlink比STlink烦一点的就是驱动不能直接用。 OpenOCD无需Jlink驱动,但需要USB驱动,要不然会有如下几行报错:

Warn : Failed to open device: LIBUSB_ERROR_NOT_SUPPORTED.
Info : No device selected, using first device.
Error: No J-Link device found.

解决办法:

  1. 安装zadig
  2. 勾上options->List all device
  3. 找到对应的Jlink设备,并将driver替换成libusbK:

运行

如果是USB连接,使用SWD接口的,直接打开终端,运行命令:openocd -f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg

这时就可以看到开放了几个端口了,表明成功了。

Open On-Chip Debugger 0.12.0 (2023-01-14-23:37)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
        swd
        Info : Listening on port 6666 for tcl connections
        Info : Listening on port 4444 for telnet connections
        Info : J-Link V9 compiled May  7 2021 16:26:12
        Info : Hardware version: 9.40
        Info : VTarget = 3.287 V
        Info : clock speed 1000 kHz
        Info : SWD DPIDR 0x1ba01477
        Info : [stm32f1x.cpu] Cortex-M3 r2p1 processor detected
        Info : [stm32f1x.cpu] target has 6 breakpoints, 4 watchpoints
        Info : starting gdb server for stm32f1x.cpu on 3333
        Info : Listening on port 3333 for gdb connections

注:如果需要远程gdb调试,记得: 1. 加上命令选项 -c "bindto 0.0.0.0"。即:openocd -f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg -c "bindto 0.0.0.0" 2. 防火墙得配置得当,不要被拦截了

完成后重新运行

openocd -f interface/jlink.cfg -f target/stm32f1x.cfg -c "program Project.hex verify reset exit"

发现报错,由于我使用的是jlink的swd,但openodb的安装目录D:\Program Files (x86)\OpenOCD-20231002-0.12.0\share\openocd\scripts\interface下只有jlink.cfg,没有与swd相关的文件,因此只能自己新建一个文件,把jlink.cfg复制一份并重命名为jlink_swd.cfg,修改内容如下:

transport select swd(增加这条),保存。

重新运行

openocd -f interface/jlink.cfg -f target/stm32f1x.cfg -c "program Project.hex verify reset exit"

发现烧录正常了。仿真也可以。

但是使用了Zadig把对应的Jlink设备,并将driver替换成libusbK后,在Keil MDK里识别不到JLink了,尴尬。

参考网友资料

1、使用VScode开发STM32:基于CMake(包含标准库和HAL库工程)_vscode cmake stm32-CSDN博客2、Vscode搭建开发调试STM32/RISC-V环境IDE(最全面)_vscode stm32-CSDN博客

3、https://zhuanlan.zhihu.com/p/681137030

4、Jetson平台使用Jlink给stm32下载程序_jtag scan chain interrogation-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值