使用VSCode和CubeMX编译STM32:高效优雅的开发体验
VSCode+CubeMX = 优雅的编译STM32
前言
基于原文章 配置CLion + STM32CubeMX开发环境 – 哔哩哔哩 (bilibili.com)
使用过程中有出现过编译器失效的问题,并且由于是和谐版的,对于一些其他用途不够友好,于是我决定搭建一个完全开源 完全免费好用的编译环境,希望能帮助到正在解决问题的你,以下是对本次环境搭建的记录。
1.先决条件
请参考 配置CLion + STM32CubeMX开发环境 – 哔哩哔哩 (bilibili.com) 根据文章搭建好gcc + mingw64 + openocd 的环境变量配置,本次关于安装这些环境变量配置就不再赘述,将CLion替换成VSCode,即下图框选的不再需要安装。
首先需要make环境,其实上面已经安装好的,只需要一点小小的改动即可,找到mingw64的环境路径,找到如下的文件
复制一份并重新命名为 make即可
然后 win+R,输入CMD调出终端,输入 make -v,输出以下文字表示 make 环境安装好了
然后下载安装VSCode Visual Studio Code – Code Editing. Redefined
一直下一步就好了
这一步可以根据喜好勾选上,勾选上之后就可以在文件目录右键打开了
一路下一步即可,如果需要修改路径,请根据喜好自行修改。
安装好后直接打开
需要中文的话可以在插件哪里搜索 Chinese
选择 install 然后重启VSCode即可
再在插件那里搜索 C/C++,前面三个插件全部安装,安装好后点击选择我的默认编译器会跳出如下选择项,选择第一个即可。
再在插件那里搜索 makefile,安装Makefile Tools
此时可以关闭VSCode,然后打开STM32CubeMX开始创建第一个工程
以STM32F103C8T6为例
首先点击System Core,Debug模式设置为Serial Wire ,防止下载一次之后SW口被禁,第二次下载时提示找不到设备。
点击RCC选择高速时钟和低速时钟源 ,根据需求选择即可
直接点击图形界面的PC13引脚,将PC13设置为GPIO_Output模式,因为最小系统板上有LED连接在PC13上,可以用于环境搭建的调试 。
然后就是时钟的一些设置,这个根据自己工程实际应用场景设置就行,也可以如下图设置
进入 Project Manager,对项目名称和IDE做配置
首先点击 Code Generator,勾选上 “Generate peripheral ***”这个选项,该选项是为了将所创建的文件以单个文件保存,而不是将所有函数放在 main.c 里面。
项目名称随意命名,但是Toolchain/IDE需要选择 Makefile,这点很重要。
直接点击GENERTE CODE即可
然后点击 Open Folder,打开文件夹
再在该文件夹空白处鼠标右击,点击“通过Code打开”
如果在安装时没有勾选下面红框内容,那么上面得到鼠标右击可能不会出现“通过Code打开”
那就直接手动打开 VSCode,并选择“打开文件夹”,找到项目所在文件夹并打开
勾选信任即可
双击 makefile 文件,需要对此文件做一些修改
点击终端,输入 make 然后回车,看看输出有没有报错
一般从 CubeMX 直接生成的工程不会报错的,除非安装环境有问题。安装环境请参考 配置CLion + STM32CubeMX开发环境 – 哔哩哔哩 (bilibili.com)
请查看build文件夹下是否有以下文件,如果有,那么恭喜你已经已经完成 99%了,如果不需要DAPLink下载或者ST-link下载的话,就可以直接这样用了。
修改 Makefile文件使用openocd下载
在 Makefile 里面找到 all:并且在.bin之后添加“ openocd”
如下图,使用DAPLink下载
openocd:
openocd -f DAPLink.cfg -c "tcl_port disabled" -c "gdb_port disabled" -c "tcl_port disabled" -c "program $(BUILD_DIR)/$(TARGET).elf" -c reset -c shutdown
如下图使用ST-Link下载
openocd:
openocd -f ST-Link.cfg -c "tcl_port disabled" -c "gdb_port disabled" -c "tcl_port disabled" -c "program $(BUILD_DIR)/$(TARGET).elf" -c reset -c shutdown
ctrl+s保存
CFG文件创建
在 Makefile文件同级目录下新建一个文件命名为 DAPLink.cfg
复制以下文本到DAPLink.cfg
# choose st-link/j-link/dap-link etc.\
# adapter driver cmsis-dap
# board:板卡配置,各种官方板卡
# 路径在OpenOCD安装目录的share\openocd\scripts下:
# interface:仿真器类型配置,比如ST-Link、CMSIS-DAP等都在里面
# target:芯片类型配置,STM32F1xx、STM32L0XX等等都在里面
# 设置好配置文件之后,就可以点击下载或者调试按钮进行下载和在线调试了。
# 在配置文件中不要加reset_config srst_only这一句,会导致下载失败,这一句是指示系统重启的,删除不影响下载。
source [find interface/cmsis-dap.cfg]
transport select swd
# 0x10000 = 64K Flash Size
# 0x100000 = 1024k Flash Size
# set FLASH_SIZE 0x100000
source [find target/stm32f1x.cfg]
# download speed = 10MHz
adapter speed 10000000
ST-Link.cfg 文件创建同理,复制以下文本到ST-Link.cfg
# choose st-link/j-link/dap-link etc.\
# adapter driver cmsis-dap
# board:板卡配置,各种官方板卡
# 路径在OpenOCD安装目录的share\openocd\scripts下:
# interface:仿真器类型配置,比如ST-Link、CMSIS-DAP等都在里面
# target:芯片类型配置,STM32F1xx、STM32L0XX等等都在里面
# 设置好配置文件之后,就可以点击下载或者调试按钮进行下载和在线调试了。
# 在配置文件中不要加reset_config srst_only这一句,会导致下载失败,这一句是指示系统重启的,删除不影响下载。
source [find interface/stlink.cfg]
transport select hla_swd
# 0x10000 = 64K Flash Size
# 0x100000 = 1024k Flash Size
# set FLASH_SIZE 0x100000
source [find target/stm32f1x.cfg]
# download speed = 10MHz
adapter speed 10000000
#后面的表示注释,删除也不会影响到下载
第四章
使用 DAPLink/ST-Link 接上开发板,并打开main.c,修改如下,表示PC13 每500ms闪烁一次
ctrl+s保存之后点击终端
输入 make 并回车,显示以下信息则表示生成成功,可以看到开发板上PC13的小灯隔500ms闪烁一次。
作者:make_tools