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插件

Keil Assistant插件

1.3.2 Keil Assistant配置

Keil Assistant.MDK: Uv4 Path处填入Keil的安装路径,也可以顺便把C51的路径填了。
Keil Assistant配置

2.CubeMX生成MDK工程

生成一个闪灯程序[3],可以按照以下步骤生成一个STM32的最小工程

2.1 新建工程

新建工程

2.2 选择目标芯片

PartNumber处填入STM32F103C8,然后选择目标芯片,再点击Start Project
选择目标芯片

2.3 时钟配置

展开System Core选项卡,选择RCCHigh Speed Clock(HSE)下拉框选择Crystal/Ceramic REsonator
选择外部时钟

2.4 Debug配置

展开System Core选项卡,选择SYSDebug下拉框选择Serial Wire
Debug配置

2.5 配置外设

在此处配置一个GPIO的输出,即PC13
GPIO配置

2.6 配置时钟树

点击Clock Configuration选项卡,先选择PLLCLK,再选择HSE,最后在HCLK(MHz)中填入72并回车确认
时钟树配置

2.7 生成MDK工程

  • 选择Project Manager选项卡
  • 侧边栏Project
    • Project Name填入项目名称blink
    • Toolchain / 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工程

生成MDK工程

3.MDK编译下载

3.1 打开MDK工程

可以在CubeMX生成工程后,点击Open Project打开工程,也可以找到实际存储该工程的路径并打开。
打开MDK工程

3.2 选择JLink为下载调试工具

需要确保JLink的下载方式为SWD
选择JLink

3.3 设置下载完自动重启

下载完自动重启

3.4 编译

main.c的while循环中增加一个切换高低电平输出,并延迟500ms。点击编译。

1
2
3
// LED灯以500毫秒的间隔闪烁
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(500);

MDK编译

3.5 下载

MDK下载
下载运行结果

4.Keil Assistant编译下载

4.1 打开MDK工程

  • 点击Keil UVISION PROJECT最右侧的按钮: Open keil uvision project
  • 找到blink.uvprojx文件并导入
  • 右下角点击Ok切换工作区

Keil_Assistant-打开MDK工程

切换工作区后,Keil Assistant插件可能需要花几秒的时间才会把工程加载出来。

4.2 编译

1
2
// 修改为100ms,LED灯以100毫秒的间隔闪烁
HAL_Delay(100);

Keil_Assistant-编译

4.3 下载

Keil_Assistant-下载

5.注意事项

5.1 无法烧录问题排查

如果编译正确却无法烧录程序,说明没有正确建立SWD连接。先判断电脑是否与JLink建立连接,如果电脑识别不到JLink可以尝试更换USB数据线(尽可能选择质量好的USB数据线)。如果电脑可以检测到JLink,但是Keil里无法识别SW设备,则检查SWD的接线是否正确,以及接线是否牢固。切记不要接错VCC和GND

JLink与电脑正确连接
JLink与STM32正确连接

5.2 VSCode头文件错误问题

在VSCode如果出现头文件报错等问题,记得先检查c_cpp_properties.json文件的includePath是否包含了正确以及完整的库(虽然并不影响编译),解决此问题的方法可以全局搜索具体报错的头文件,找到其位置。请不要在VSCode里手动添加路径到c_cpp_properties.json文件,因为每编译一次就会此文件就会被覆盖掉。正确的做法是打开Keil去添加C/C++选项卡includePath,然后再编译一下就可以自动加载到正确的库文件(因为VSCode每次编译都会读取一遍Keil的配置)

增加includePath以正常跳转

参考


Windows搭建STM32开发环境(基础篇)
https://blog.gogo.uno/2024/02/12/vscode-stm32-develop/
作者
Orionxer
发布于
2024年2月13日
更新于
2024年8月3日
许可协议