Windows搭建STM32开发环境(基础篇)
在Windows下通过VSCode的插件Keil Assistant
实现编译以及烧录STM32工程。注意,基础篇不包含调试功能,进阶篇[1]才提供调试功能。虽然缺少调试功能,但是该插件的配置非常简单,且调用的是Keil进行的编译下载,理论上没有兼容性的问题。
1.准备
1.1 硬件
- STM32F103C8T6开发板,确保开发板上的PC13引脚连接LED灯
- JLink调试器
- 按照SWD方式接线,总共4根线:VCC(3.3V), SWD, SWCLK, GND
1.2 软件
- 安装Keil MDK,自行确保软件安装成功[2]
- 安装STM32CubeMX(如果STM32CubeMX无法生成MDK-ARM的代码,可以尝试安装旧版的CubeMX)
1.3 VSCode插件
1.3.1 安装Keil Assistant插件
1.3.2 Keil Assistant配置
Keil Assistant.MDK: Uv4 Path
处填入Keil的安装路径,也可以顺便把C51
的路径填了。
2.CubeMX生成MDK工程
生成一个闪灯程序[3],可以按照以下步骤生成一个STM32的最小工程
2.1 新建工程
2.2 选择目标芯片
PartNumber
处填入STM32F103C8,然后选择目标芯片,再点击Start Project
2.3 时钟配置
展开System Core
选项卡,选择RCC
,High Speed Clock(HSE)
下拉框选择Crystal/Ceramic REsonator
2.4 Debug配置
展开System Core
选项卡,选择SYS
,Debug
下拉框选择Serial Wire
2.5 配置外设
在此处配置一个GPIO的输出,即PC13
2.6 配置时钟树
点击Clock Configuration
选项卡,先选择PLLCLK
,再选择HSE
,最后在HCLK(MHz)中填入72并回车确认
2.7 生成MDK工程
- 选择
Project Manager
选项卡 - 侧边栏
Project
Project Name
填入项目名称blinkToolchain / IDE
选择MDK-ARM,并确保Min Version
大于V5
- 侧边栏
Code Generator
- 选择
Copy only necessary library files
- 勾选
Generate peripheral initialization as a pair of '.c/.h' files per peripheral
- 选择
- 最后点击顶部
GENERATE CODE
按钮生成MDK工程
3.MDK编译下载
3.1 打开MDK工程
可以在CubeMX生成工程后,点击Open Project
打开工程,也可以找到实际存储该工程的路径并打开。
3.2 选择JLink为下载调试工具
需要确保JLink的下载方式为SWD
3.3 设置下载完自动重启
3.4 编译
在main.c
的while循环中增加一个切换高低电平输出,并延迟500ms。点击编译。
1 |
|
3.5 下载
4.Keil Assistant编译下载
4.1 打开MDK工程
- 点击
Keil UVISION PROJECT
最右侧的按钮:Open keil uvision project
- 找到
blink.uvprojx
文件并导入 - 右下角点击
Ok
切换工作区
切换工作区后,Keil Assistant插件可能需要花几秒的时间才会把工程加载出来。
4.2 编译
1 |
|
4.3 下载
5.注意事项
5.1 无法烧录问题排查
如果编译正确却无法烧录程序,说明没有正确建立SWD连接。先判断电脑是否与JLink建立连接,如果电脑识别不到JLink可以尝试更换USB数据线(尽可能选择质量好的USB数据线)。如果电脑可以检测到JLink,但是Keil里无法识别SW设备,则检查SWD的接线是否正确,以及接线是否牢固。切记不要接错VCC和GND
5.2 VSCode头文件错误问题
在VSCode如果出现头文件报错等问题,记得先检查c_cpp_properties.json
文件的includePath
是否包含了正确以及完整的库(虽然并不影响编译),解决此问题的方法可以全局搜索具体报错的头文件,找到其位置。请不要在VSCode里手动添加路径到c_cpp_properties.json
文件,因为每编译一次就会此文件就会被覆盖掉。正确的做法是打开Keil去添加C/C++选项卡的includePath
,然后再编译一下就可以自动加载到正确的库文件(因为VSCode每次编译都会读取一遍Keil的配置)