stm32使用vscode的开发配置stm32-for-vscode

· 更新于

stm32vscode

stm32在vscode下开发,比keil方便很多。

vscode下有很多工具可以开发stm32

一,介绍方案:

1,arm官方插件

https://www.keil.arm.com/community/

cmsis,我安装了,但是配置时候总是卡住不知道在干什么。

放弃(24.01.19,估计以后会变好)

优点:可以直接导入keil mdk的工程

缺点:他是调用keil的编译器,所以速度和keil一样,不快。

2,STM32 VS Code Extension

不会用。

3,使用makefile方案+插件stm32-for-vscode

参考链接(不用看这个):https://zhuanlan.zhihu.com/p/646171731

stm32-for-vscode插件地址(不用看这个)https://github.com/bmd-studio/stm32-for-vscode

二,开始配置

我使用方案三

工具下载:

a,MinGW:

https://github.com/skeeto/w64devkit/releases

选择w64devkit-xxxx.zip 下载,这个是包含minggw的win开发包

b,arm-none-eabi-gcc

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

c,OpenOCD

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

全解压到一个文件夹下:

我的路径如下:

D:\SOFTWARERUN\STM32VSCODE\GCC-ARM-NONE-EABI-10.3-2021.10\BIN

D:\SOFTWARERUN\STM32VSCODE\W64DEVKIT\BIN\MAKE.EXE

D:\SOFTWARERUN\STM32VSCODE\OPENOCD-20231002-0.12.0\BIN\OPENOCD.EXE

安装插件:

安装vscode插件是stm32-for-vscode

安装后,配置路径,同时修改到工作区

保存,重开vscode,我测试,重开还是不行,弄了很久,json里面路径斜杠要朝右,不能朝左。

成功后,出现如下图界面

使用stm32cube配置一共工程,最后导出的时候选择makefile方式。

然后用vscode打开这个文件夹。

编译模式是make -j16,也就是16线程,不知道如何能自己该别的线程,反正比keil mdk的默认快多了。

可以选择下载器,stlink v2 cmsis-dap


添加编译信息

插件会自动生成一个文件STM32-for-VSCode.config.yaml

这个文件会自动处理成makefile

添加新文件夹就在includeDirectories:和sourceFiles:  

配置文件的中文注释如下:

`# 配置文件用于STM32的VSCode扩展 # 数组可以通过两种方式输入。一种是: [entry_1, entry_2, ..., entry_final] # 或通过在变量名称下添加缩进列表,例如: # VARIABLE: # - entry_1 # - entry_2  # 项目名称 target: 1rtosv2 # 可以是C或C++ language: C  optimization: Og  # MCU设置 targetMCU: stm32l4x cpu: cortex-m4 # CPU类型,例如cortex-m4 fpu: fpv4-sp-d16 # 定义浮点数的方式。可以为空。 floatAbi: -mfloat-abi=hard ldscript: STM32L476RGTx_FLASH.ld # 链接脚本  # 编译器定义。编译器将自动添加-D前缀。 cDefinitions: [] cxxDefinitions: [] asDefinitions: []  # 编译器定义文件。可以添加单个文件或不同定义的文件数组。 # 该文件预计每一行都有一个定义。 # 这可以方便地传递编译时的密钥,或生成用于每个设备设置的文件。 cDefinitionsFile: cxxDefinitionsFile: asDefinitionsFile:  # 编译器标志 cFlags:    - -Wall   - -fdata-sections   - -ffunction-sections  cxxFlags: [] assemblyFlags:    - -Wall   - -fdata-sections   - -ffunction-sections  linkerFlags:    - -Wl,--print-memory-usage  # 要包含的库。库的名称将自动添加-l前缀。 libraries:    - c   - m  # 库目录。可以在这里添加包含自定义库的文件夹。 libraryDirectories: []  # 应从编译中排除的文件或文件夹。 # 可以使用Glob模式(https://www.wikiwand.com/en/Glob_(programming))。 # 注意,双星号在yaml中是保留的 # 这些应该用\转义或名称应该用双引号括起来,例如"**.test.**" excludes:    - "**/Examples/**"   - "**/examples/**"   - "**/Example/**"   - "**/example/**"   - "**_template.*"  # 包含目录(包含.h或.hpp文件的目录) # 如果存在CubeMX makefile,它将自动包含该makefile的包含目录。 includeDirectories:    - Inc/**   - Core/Inc/**   - Core/Lib/**   - Src/**   - Core/Src/**   - Core/Lib/**  # 应包含在编译中的文件。 # 如果存在CubeMX makefile,它将自动包含该makefile的c和cpp/cxx文件。 # 可以使用Glob模式(https://www.wikiwand.com/en/Glob_(programming))。 # 注意,双星号在yaml中是保留的 # 这些应该用\转义或名称应该用双引号括起来,例如"HARDWARE_DRIVER*.c" sourceFiles:     - Src/**   - Core/Src/**   - Core/Lib/**  # 当没有makefile时,将显示警告弹出窗口。 # 但是,如果需要在没有CubeMX Makefile的情况下进行编译,可以关闭此选项。 suppressMakefileWarning: false  # 自定义makefile规则 # 在这里,可以向STM32Make.make文件添加自定义makefile规则 # 下面注释掉的示例演示了如何使用它。 customMakefileRules: # - command: sayhello #   rule: echo "hello" #   dependsOn: $(BUILD_DIR)/$(TARGET).elf # 可以省略      # 在调用make命令时将使用的其他标志 makeFlags: # - -O  # 仅在make版本为4.0及更高版本时使用此选项,当构建输出混乱时使用 # - --silent # 使用此选项以使构建输出静音`