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选项卡 - 侧边栏
ProjectProject 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的配置)
