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 # 使用此选项以使构建输出静音
本文地址: stm32使用vscode的开发配置stm32-for-vscode