使用 VSCode 开发调试 STM32 单片机尝试
本文记录基于 Windows + DAP-Link 开发 STM32F103C8T6 的实践过程,其他操作系统或芯片应该也只是大同小异的问题。
注意:工作空间中千万不要出现中文目录和空格!
一、环境准备
硬件环境就是 STM32F103C8T6 核心板和 DAP 调试器,复杂的主要在软件部分。
调试时需要让gdb链接openocd,因此需要telnet工具。Windows下直接在Windows功能里打开telent client并重启就行
1.1_软件
-
VSCode
可以使用普通版或便携版,我使用的是大佬制作的便携版:https://portapps.io/app/vscode-portable/ -
STM32CubeMX
用来生成 Markfile 工程,已有工程模板的话不必须安装。使用 CubeMX 时需要用到 Java , Java 64位下载地址:https://java.com/en/download/manual.jsp -
GNU Arm Embedded Toolchain
ARM 的 GUN 工具链,下载地址:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
安装完成后需要添加到环境变量,使用命令arm-none-eabi-gcc -v
测试。 -
OpenOCD
下载调试用的工具,已编译好的Windows平台可用二进制文件下载地址: https://gnutoolchains.com/arm-eabi/openocd/
同样安装完成后需要添加到环境变量,使用命令openocd -v
测试。 -
make
下载地址:http://gnuwin32.sourceforge.net/packages/make.htm
同上,环境变量,make -v
-
添加环境变量
因为所有个工具都放在了同一个目录下,所以我喜欢这么加环境变量,环境变量添加完后需要点击所有的“确定”然后重启命令窗口才生效。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1DaH6Oj7-1586013415251)(https://i.loli.net/2020/03/28/mYKhjFO7NiBXR4r.png)]
如果出现配置完环境变量 VSCode 中的终端识别不到的情况重启电脑可以解决。
1.2_VSCode-插件
- C/C++
实时语法检查。
-
ARM
ARM的汇编语法高亮 -
Cortex-Debug
MCU的调试核心,比 VSCode 默认的调试界面强大很多。为了更好的使用这个工具进行调试我们还需要对应单片机的 .svd 文件,这个文件定义了某个芯片的非常详细的信息,包含了哪些片内外设、每一个外设的硬件寄存器、每一个寄存器中每一个数据位的值以及详细的说明信息等等。svd 文件可以在单片机的固件库原包里找到,也可以去其他地方下载,这里推荐一个地方:<https://github.com/posborne/cmsis-svd/tree/master/data>
二、用CubeMX新建Makefile工程
CubeMX 的下载和安装就不多说了,注意运行它需要 java ,而且网络不好的情况还需要挂代理。
2.1_添加软件包
启动 CubeMX 后点击 "Help" -> "Manage embedded software packages"
可以进入软件包管理页(快捷键Alt+U
)。进入后根据需要安装相应型号的软件包即可。
2.2_创建工程
-
点击软件首页的
ACCESS TO MCU SELECTOR
进入MCU选择器选择一个芯片,然后软件会跳到工程配置界面。 -
配置RCC. 时钟是必须要配置的,先在
Pinout&onfiguration
里配置时钟源引脚,然后去Clock Configuration
中配置时钟树。配置时钟树时先选择好时钟源输入,然后在HCLK(MHz)
中输入需要的频率并回车软件就会自动配置后面的部分。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8PyPtE4G-1586013415253)(https://i.loli.net/2020/03/29/E8OqzKV9CXvsSMD.png)]