使用 STM32CubeMx + VSCode 开发 STM32
目的
1 使用 STM32CubeMX配置STM32开发板,生成Makefile工程
2 使用 VSCode 开发并调试
环境及工具
1 STM32CubeMx
2 Visual Studio Code
3 MINGW
4 ARM GCC Toolchain
5 Openocd
内容
操作步骤
1 安装STM32CubeMX
去官网即可下载 下载地址
安装步骤自行查阅
软件运行:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XpwVWeSq-1589681022534)(http://blogpic.raogang.top/blogImages/20200516215800.png)]
2 安装VSCode
官网自行下载 下载地址
安装步骤自行查阅
软件运行:
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyMDA1NS5wbmc?x-oss-process=image/format,png)
3 安装MINGW
MinGW是将GCC编译器和GNU Binutils移植到Windows平台下的产物
包括一系列头文件、库和可执行文件。主要使用其中的make工具。
官网自行下载 下载地址
安装步骤自行查阅
安装完成在命令行工具输入 make -v
查看效果
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyMDQxMC5wbmc?x-oss-process=image/format,png)
4 安装 ARM GCC Toolchain
STM32是ARM内核的芯片,这个交叉编译工具链包含了所有用于交叉编译ARM内核程序的软件
这里使用的是gcc-arm-none-eabi-9-2019-q4-major-win32.exe 目前的Windows上的最新版的
如果是在别的系统上搭建只需要选择对应系统版本的即可。
(1) 下载
下载地址
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyMDcwNS5wbmc?x-oss-process=image/format,png)
下载过于缓慢,找了个老版本
(2) 添加环境变量
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyNDIxNi5wbmc?x-oss-process=image/format,png)
(3)检验
arm-none-eabi-gcc -v
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyNDc1MC5wbmc?x-oss-process=image/format,png)
5 安装OpenOCD
开源调试软件
(1)下载
官方网站
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyMTY1Ni5wbmc?x-oss-process=image/format,png)
(2)解压
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyMjEzNC5wbmc?x-oss-process=image/format,png)
(3)添加环境变量
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyMjEwMy5wbmc?x-oss-process=image/format,png)
(4)验证
openocd -v
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyMjU1MS5wbmc?x-oss-process=image/format,png)
6 VSCode 插件安装
- ARM:使的ARM汇编代码获得语法高亮,这里主要用在启动文件上。
- C/C++:使VScode获得对C/C++语言的支持,包括智能提示,调试等。
- Chinese (Simplified) Language Pack for Visual Studio Code:VScode中文语言包。
- C++ Intellisense:提供C++智能感知功能。
- Cortex-Debug:对ARM Cortex-M内核的单片机提供调试支持。
- Cortex-Debug: Device Support Pack - STM32F1(F4,L1):这三个芯片包分别对Cortex-Debug提供三款芯片的设备支持。
- GBKtoUTF8:因为平时的Keil的STM32工程文件大部分都是GB2312编码的,这个扩展可以自动将GB2312 转换为UTF-8编码。
- LLVM :代码补全
(1) arm 插件
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyNTEyNy5wbmc?x-oss-process=image/format,png)
(2) C/C++ 插件
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyNTE0Ny5wbmc?x-oss-process=image/format,png)
(3) Chinese
需要则安装
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyNTIzMi5wbmc?x-oss-process=image/format,png)
(4) C++ Intellisense
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyNTMxMS5wbmc?x-oss-process=image/format,png)
(5) Cortex-Debug
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyNTQzNS5wbmc?x-oss-process=image/format,png)
(6) GBKtoUTF8
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIyNTUxMS5wbmc?x-oss-process=image/format,png)
(6) GBKtoUTF8
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WP6R9TFV-1589681022575)(http://blogpic.raogang.top/blogImages/20200516225650.png)]
7 使用STM32CubeMX生成一个工程
(1)新建一个工程
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMDE1MS5wbmc?x-oss-process=image/format,png)
选择芯片
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMDI0Ni5wbmc?x-oss-process=image/format,png)
(2)初始化
引脚配置
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMDM1Mi5wbmc?x-oss-process=image/format,png)
时钟配置
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMDU1OC5wbmc?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMDY1NS5wbmc?x-oss-process=image/format,png)
(3)注意
这个不选会不能调试
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMDQzNy5wbmc?x-oss-process=image/format,png)
(4)配置生成选项
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMTA0MC5wbmc?x-oss-process=image/format,png)
(5)生成完成
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMTIwNC5wbmc?x-oss-process=image/format,png)
8 使用VSCode编辑项目 ***
(1)使用VSCode打开
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMTQyMy5wbmc?x-oss-process=image/format,png)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y35RkNKA-1589681022601)(http://blogpic.raogang.top/blogImages/20200516231513.png)]
(2)配置c_cpp_properties.json
使用Ctrl+Shift+P
打开命令行,
输入edit configurations(json)
他会在工程文件夹下生成一个.vscode文件夹并在其中创建一个c_cpp_properties.json的配置文件。其中include路径和宏定义可以参照makefile添加。
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMTk0Ny5wbmc?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMzI1Ni5wbmc?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMzM0OS5wbmc?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzMzYzMC5wbmc?x-oss-process=image/format,png)
(3)配置launch.json
调试的时候使用的是cortex-debug插件,JlinkGDBServer和OpenOCD的配置内容略有区别。
点击VScode左侧活动栏的调试图标,如果是第一次使用的话,会让你创建launch.json文件,选择cortex-debug就可以生成一个模板。
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA4MjEwMC5wbmc?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA4MjIxNy5wbmc?x-oss-process=image/format,png)
需要修改:
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA4MjMyNC5wbmc?x-oss-process=image/format,png)
{
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/${workspaceFolderName}.elf",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "arm-none-eabi-gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{"text": "cd ${workspaceFolder}/build"},
{"text": "file ${workspaceRootFolderName}.elf"},
{"text": "target remote localhost:3333"},
{"text": "monitor reset"},
{"text": "monitor halt"},
{"text": "load"},
]
}
]
}
(4)创建任务
可以直接在终端输入make进行编译,VScode还具有一个tasks功能,可以自己配置一些指令。
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNjIzNDE1Ni5wbmc?x-oss-process=image/format,png)
{
"version": "2.0.0",
"tasks": [
{
"label": "编译项目",
"type": "shell",
"command": "make",
"args": [
"-j4"
]
},
{
"label": "启动调试下载器",
"type": "shell",
"command":"openocd -f interface/cmsis-dap.cfg -c 'transport select swd' -f target/stm32f1x.cfg"
}
]
}
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA4NDAxNS5wbmc?x-oss-process=image/format,png)
使用这里的任务的话,快捷键Ctrl+Shift+P,然后输入task和空格,会自动弹出当前有的任务,回车执行即可。
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA4NDYwMy5wbmc?x-oss-process=image/format,png)
(5)编译项目
启动任务
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA4NDYwMy5wbmc?x-oss-process=image/format,png)
编译成功
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA4NDk0OC5wbmc?x-oss-process=image/format,png)
(6)启动调试下载器
ctrl + shift + p
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA5MTMxOC5wbmc?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA5MTY0MS5wbmc?x-oss-process=image/format,png)
(7)调试设备
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA5MTcyOC5wbmc?x-oss-process=image/format,png)
![](https://imgconvert.csdnimg.cn/aHR0cDovL2Jsb2dwaWMucmFvZ2FuZy50b3AvYmxvZ0ltYWdlcy8yMDIwMDUxNzA5MTc1OC5wbmc?x-oss-process=image/format,png)
项目地址
github
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)