VS Code 搭建stm32开发环境
MCU免费开发环境
一般芯片厂家会提供各种开发IDE方案,通常其中就包括其自家的集成IDE,如:
意法半导体 STM32CubeIDE
NXP Codewarrior
TI CCS
另外也可以用eclipse、VS studio、VS code等搭建开发环境
VS Code 搭建stm32开发环境
1.搭建准备
程序安装
1.下载并安装 vs code
2.下载并安装 STM32CubeMX
支持最新的HAL库,工程代码配置与生成工具,支持生成IAR、Keil、STM32CubeIDE、Makefile等工程,这里使用其生成的Makefile工程。
3.下载并安装 Git for Windows
该工具集成有精简版的mingw,这里我们使用其bash终端和版本管理均非常有用。
4.下载并安装 arm-none-eabi-gcc
编译器,GUN的arm的通用交叉编译链工具,基本上常用的arm处理器均支持;
安装时勾选设置全局环境变量以便于配置;
使用离线免安装包时,解压到合适的位置,在系统环境变量添加\bin目录,运行CMD或者Windows PowerShell,测试一下是否可用。命令:arm-none-eabi-gcc -v
5.下载并安装 mingw
MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API 和 MSYS,因此可以将源代码编译生成 Windows 下的可执行程序,又能如同在 Linux 平台下时,使用一些 Windows 不具备的开发工具。
一句话来概括:MinGW 就是 GCC 的 Windows 版本 。
其安装一般为在线安装,按网上步骤即可。
这里我们主要需要使用其 mingw32-make 功能.
- 离线安装
如果由于环境不能在线安装,可安装其离线安装包
MinGW-W64 GCC-8.1.0 x86_64-win32-seh
下载压缩文件并解压到合适的位置,在系统环境变量添加\bin目录,运行CMD或者Windows PowerShell,测试一下是否可用。命令:gcc -v
同时为方便使用,复制 mingw32-make.exe 一份为 make.exe,这样后面编译程序使用 make 即可。
6.安装mysy2
shell 命令行开发环境,可用于替代 git-bash、cmd、power shell,功能相对更完善。
安装之后,在vscode中配置 settings.json--"terminal.integrated.shell.windows": "C:\msys64\msys2_shell.cmd", 详见下节。
7.下载并安装(可选) OpenOCD for Windows
8.Jlink、ST-Link驱动
9.STM32CubeProg 用于stm32下载程序
VS Code插件搭建所需
安装开发所需基础插件(插件在 vs code 拓展栏搜索名称即可)
C/C++(必要)
增加了对C / C ++的语言支持,语法智能感知、加亮及调试功能
GBKtoUTF8
cortex-debug
2.工程示例
2.1 使用Cube-MX 生成Makefile工程
1.芯片选型、HAL版本、引脚配置、时钟树配置等,可参照下面博客
https://www.cnblogs.com/silencehuan/p/10904048.html
2.工程管理中,选择生成makefile工程,然后点击 generate code即可

2.2 vs code配置
默认情况下,工程下是不含.vscode的文件夹的,修改编辑用户或工程settings.json文件时会自动创建;
user--settings.json文件参考修改如下(包含配置终端和一些格式等设置):
{
"C_Cpp.updateChannel": "Insiders",
"http.proxySupport": "off",
"workbench.iconTheme": "vscode-icons", //取消左侧自动聚焦
"explorer.autoReveal": false,
"[c]": {
"editor.defaultFormatter": "ms-vscode.cpptools" //默认格式化工具
},
"[h]": {
"editor.defaultFormatter": "ms-vscode.cpptools" //默认格式化工具
},
"editor.formatOnSave": true, //文件保存时自动格式化
"editor.formatOnPaste": true, //代码粘贴时自动格式化
"editor.formatOnType": true, //自动格式化键入行
// "terminal.integrated.shell.windows": "D:\\Program Files\\Git\\git-bash.exe",
"terminal.integrated.shell.windows": "C:\\msys64\\msys2_shell.cmd",
"terminal.integrated.shellArgs.windows": [
"-defterm",
"-mingw64",
"-no-start",
"-here",
"-use-full-path" //使用系统环境变量
],
"terminal.external.windowsExec": "D:\\Program Files\\Git\\git-bash.exe"
}
或者在菜单中设置 File--Preferences--Settings--Features--Terminal
2.3 工程makefile
1.实际开发需要熟悉 makefile
工程后面添加的文件程序需要由makefile来组织编译;
打开工程makefile,编译工具指定,默认 PREFIX = arm-none-eabi- ,如果已设置环境变量则无需修改,否则需添加(实际绝对路径路径) GCC_PATH = D:\gcc-arm-none-eabi-5_4-2016q3-20160926-win32\bin
PREFIX = arm-none-eabi-
# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)
# either it can be added to the PATH environment variable.
ifdef GCC_PATH
CC = $(GCC_PATH)/$(PREFIX)gcc
AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp
CP = $(GCC_PATH)/$(PREFIX)objcopy
SZ = $(GCC_PATH)/$(PREFIX)size
else
CC = $(PREFIX)gcc
AS = $(PREFIX)gcc -x assembler-with-cpp
CP = $(PREFIX)objcopy
SZ = $(PREFIX)size
endif
HEX = $(CP) -O ihex
BIN = $(CP) -O binary -S
2.4 工程 .vscode json配置(4个)
1.c_cpp_properties.json
主要有添加include路径,编译器路径,宏定义等,设置好后索引、编译就跟keil一样方便;
打开工程 .vscode 下面的 c_cpp_properties.json 配置脚本,这个json不允许有注释,如果你自己编写了头文件又不在workspaceFolder下,路径也要加到includePath和browse里。设置如下:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}Drivers/STM32F4xx_HAL_Driver/Inc",
"${workspaceFolder}Drivers/STM32F4xx_HAL_Driver/Inc/Legacy",
"${workspaceFolder}Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"${workspaceFolder}Drivers/CMSIS/Include",
"${workspaceFolder}Drivers/CMSIS/Include",
"D:/gcc-arm-none-eabi-5_4-2016q3-20160926-win32/arm-none-eabi/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"USE_HAL_DRIVER",
"STM32F407xx"
],
"compilerPath": "D:\\gcc-arm-none-eabi-5_4-2016q3-20160926-win32\\bin\\arm-none-eabi-gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x86"
}
],
"version": 4
}
2.launch.json
所需要调试的文件的路径、调试时的CWD(工作路径)、调试器的路径及一些调试参数(程序启动参数等);
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"cwd": "${workspaceRoot}",
"executable": "./bin/HAL_Test.elf",
"name": "stm32 Debug",
"request": "launch",
"type": "cortex-debug",
"servertype": "stutil",
"device": "STM32F407ZG",
"preLaunchTask": "编译并下载",
"postDebugTask": "复位设备"
}
]
}
3.tasks.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "编译",
"type": "shell",
"command": "make -j6",
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "编译并下载",
"type": "shell",
"command": "make -j6 && make update",
"problemMatcher": []
},
{
"label": "重新编译",
"type": "shell",
"command": "make clean && make -j6",
"problemMatcher": []
},
{
"label": "复位设备",
"type": "shell",
"command": "STM32_Programmer_CLI -c port=SWD -hardRst",
"problemMatcher": []
}
]
}
4.工程下打开终端,输入 make
工程编程会生成 .bin 文件,这个就是我们要烧录的目标文件。
5.使用 Jlink 的 Jflash 工具烧录
6.使用 JLink GDB server 调试,调试方法如同Linux下面的GDB,主要使用命令行
3. vs code 配置
1.取消文件自动定位到侧边栏
当我在右侧点击某个文件时,左侧会自动定位到该文件所在位置,这点特别烦,尤其在项目目录很长的时候。
在用户 settings.json 中修改
"explorer.autoReveal": false
2.设置默认终端
File--Preferences--Settings-- 中打开用户 setting.json文件,修改如下:
"terminal.integrated.shell.windows": "D:\\Program Files\\Git\\bin\\bash.exe",
"terminal.external.windowsExec": "D:\\Program Files\\Git\\bin\\bash.exe",
2.使用插件推荐(根据需求选择)
| 插件 | 功能 |
|---|---|
| C/C++ | C / C ++的语言支持,语法智能感知、加亮及调试功能,当然需要系统安装arm-none-eabi-gcc编译器 |
| Include Autocomplete | 头文件自动匹配 |
| Code Runner | 代码一键运行 |
| Cortex Debug | 提供jlink、stlink等调试接口功能 |
| filesize | 显示文件大小 |
| Python | Python的语言支持,语法智能感知、加亮及调试功能,需要系统安装python |
| Git History | 查看版本历史及比较 |
| GitLens | 代码中显示提交信息、日志查看方便,同时提供操作图标 |
| GBKtoUTF8 | |
| ARM | arm汇编语言支持 |
| Bracket Pair Colorizer | 彩虹花括号,程序逻辑范围查看方便 |
| DeviceTree | 设备树语法支持 |
| vscode-icons | 文件图标,可快速查看文件类型 |
| PlatformIO IDE |
VS Code 搭建stm32开发环境的更多相关文章
- 使用Visual Studio Code搭建TypeScript开发环境
使用Visual Studio Code搭建TypeScript开发环境 1.TypeScript是干什么的 ? TypeScript是由微软Anders Hejlsberg(安德斯·海尔斯伯格,也是 ...
- Windows下visual studio code搭建golang开发环境
Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...
- VS Code搭建.NetCore开发环境(二)
一.安装VS Code for C#的相关插件 1.C# :https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp 2 ...
- VS Code搭建.NetCore开发环境(一)
一.使用命令创建并运行.Net Core程序 1.dotnet new xxx:创建指定类型的项目console,mvc,webapi 等 2.dotnet restore :加载依赖项 dotne ...
- 使用 VS Code 搭建 TypeScript 开发环境
使用 VS Code 搭建 TypeScript 开发环境 TypeScript 是 JavaScript 的超集,TypeScript 只是增强了 JavaScript 而非改变了 JavaScri ...
- VS Code 搭建 Rust 开发环境
VS Code 搭建 Rust 开发环境 上一篇文章安装和配置好了 Rust 环境后,我们是使用的是简单的文本工具编写 Hello World 入门代码,但是为了提高我们的学习效率,下面安利大家 VS ...
- 使用vs code搭建Q#开发环境 (Mac)
Q# 是微软几年前发布的一门用于模拟量子编程的语言. 3年前我在当时风靡的博客网站 ITEYE 上发布过如何在windows上搭建其开发环境:Q#开发环境搭建.时过境迁,不但iteye不知何处去,连Q ...
- Visual Studio Code搭建python开发环境
开发Python的环境有很多,原来已经在vs2013上面搭建好python的开发环境了,但是vs2013每次启动都占太多内存(太强大了吧),这下出了vs code,既轻量又酷炫,正好拿来试一试开发py ...
- 使用vs code搭建C开发环境
关于搭建vscode的开发环境来开发c网上已经有很多类似的贴子,但是几乎都是直接给出tasks.json和launch.json文件,并未说明这两个文件的作用以及如何配置.这里面向纯小白着重说明下(1 ...
随机推荐
- Mysql读写锁保姆级图文教程
摘要:读锁会阻塞写,但是不会阻塞读,而写锁会把杜希俄都阻塞. 本文分享自华为云社区<Mysql保姆级读写锁图文教程丨[绽放吧!数据库]>,作者:Code皮皮虾 . 准备 创建mylock表 ...
- rabbitmq消息处理-转载
目录 1. 消息如何保障百分之百的投递成功? 1.1 方案一:消息落库,对消息状态进行打标 1.2 方案二:消息的延迟投递,做二次确认,回调检查 2. 幂等性 2.1 幂等性是什么? 2.2 消息端幂 ...
- 【算法学习笔记】动态规划与数据结构的结合,在树上做DP
前置芝士:Here 本文是基于 OI wiki 上的文章加以修改完成,感谢社区的转载支持和其他方面的支持 树形 DP,即在树上进行的 DP.由于树固有的递归性质,树形 DP 一般都是递归进行的. 基础 ...
- ListPopupWindow和Popupwindow的阴影相关问题demo总结
Popupwindow: 优点:可以通过setBackgroundDrawable()来重新设置阴影. 缺点:当AnchorView是可移动的,比如移动到屏幕的左右边界.左下角.右下角时,Popupw ...
- 手脱UPX壳的方法
0X00 了解 upx UPX作为一款元老级PE加密壳,在以前的那个年代盛行,著名病毒[熊猫烧香]就是使用这款加密壳. 0X01 单步跟踪法 就是使用ollydbg加载程序后,按F8进行单 ...
- Java方法02——定义与调用
方法的定义与调用 定义与调用 例子 package method; public class Demon03 { public static void main(String[] arg ...
- JIPB | 两篇连发:华中农大黄俊斌团队报道二羟基异丁酰化调控稻曲病菌致病新机制
水稻是我国重要的粮食作物,稻曲病是水稻三大病害之一,不仅造成稻米产量损失,更重要的是稻曲球中的稻曲菌素的毒性和致畸作用,给人畜健康带来严重威胁.病原菌对植物的侵袭是由病原菌的毒力和植物免疫系统相互作用 ...
- 【vulapps】Sturcts2 S2-037RCE漏洞复现
一.漏洞基本信息 S2-037官方公告 CVE编号:CVE-2016-4438漏洞名称:Struts(S2-037)远程代码执行漏洞发布日期:2016.615受影响的软件及系统:Apache stru ...
- SQL 练习21
查询每门课程被选修的学生数 SELECT cid,COUNT(cid) 选修人数 from sc GROUP BY cid
- Windows莫名内存到百分之百,需要修改虚拟内存
借鉴别人的操作: https://blog.csdn.net/xjpdf10/article/details/82849112