使用 STM32Cube 框架实现 LED 闪烁
让我们使用 STM32Cube 框架让 BlackPill STM32 板上的 LED 闪烁。
STM32Cube框架
借助 STM32Cube 框架,您可以发挥 STM32 微控制器的全部功能。 STM32Cube 框架提供对 STM32 硬件的底层访问,使您能够编写更高效且针对性能进行优化的代码。
准备工作
本教程使用以下硬件:
BlackPill STM32 板
单片机:STM32F411CEU6 开发板:WeAct Black Pill V2.0 原理图
您可以以低于 4 美元的价格购买廉价的 BlackPill STM32 克隆板。您可以使用其他STM32板,但需要修改platformio.ini文件和LED 引脚编号。
ST-LINK V2编程器
您需要它来将固件烧录到开发板。您可以以低于 5 美元的价格购买廉价的 ST-LINK V2 克隆版。
配置开发环境
VSCode 与 PlatformIO
您可以从 VSCode 扩展市场安装 PlatformIO。
STM32CubeProgrammer
您需要它来将固件烧录到开发板。
STM32CubeMX
该工具允许您配置 STM32 微控制器并为您的项目生成初始化代码。
克隆代码仓库
git clone --branch blackpill-led-blink-stm32cube https://github.com/yuichiroaoki/stm32-tutorial.git
cd stm32-tutorial
快速入门
-
将 BlackPill STM32 板连接到 ST-LINK V2 编程器。

按照上图连接 ST-LINK V2 编程器和 BlackPill STM32 开发板。 -
将 ST-LINK V2 编程器连接到计算机。
-
在 VSCode 中打开项目文件夹。
-
单击左侧栏上的 PlatformIO 选项卡,然后单击
Upload按钮将固件上传到开发板。
现在您应该看到 BlackPill STM32 板上的 LED 闪烁。
使用 STM32CubeMX 生成初始代码
使用STM32CubeMX,您可以配置STM32微控制器并为您的项目生成初始化代码,例如GPIO配置、时钟配置等。
-
打开STM32CubeMX并创建一个新项目。
-
选择STM32F411CE微控制器。
-
单击侧栏中的
SYS,然后在“调试”下拉菜单中选择Serial Wire。
信息请务必完成此设置,否则将无法向开发板烧录固件。
-
单击引脚分配和配置选项卡中的 LED 引脚,然后在模式下拉菜单中选择
GPIO_Output。BlackPill STM32 开发板的 LED 引脚是
PC13。如果使用其他开发板,请选择相应的 LED 引脚。
-
右键单击 LED 引脚并选择
Enter User Label并将该引脚命名为LED。提示设置标签后,即可在代码中通过名称引用该引脚。

-
单击侧栏中的
RCC,然后在高速时钟 (HSE) 下拉菜单中选择Crystal/Ceramic Resonator。
-
单击
Clock Configuration选项卡并配置时钟设置,如下所示:- 在 HSE Value 字段中输入 25MHz。
- 在
PLL Source Mux中选择HSE,在System Clock Mux中选择PLLCLK。 - 在
HCLK字段中输入 100MHz,然后按Enter自动计算其他字段的值。
备注BlackPill STM32 开发板使用 25MHz 晶振,因此 HSE Value 应设为 25MHz。

-
单击
Project Manager选项卡,将Toolchain Folder Location设置为要保存项目的位置,并生成代码。
现在您已经有了项目的初始化代码。
在 PlatformIO 中使用生成的代码
-
将生成的代码复制到 PlatformIO 项目文件夹中的
src文件夹中。如果使用 Linux 或 macOS,可以运行以下命令复制代码:
cp -r <STM32CubeMX project folder>/Core/**/* <PlatformIO project folder>/src/ -
将以下两行添加到
main.c文件中while循环的末尾以使 LED 闪烁:main.c/* USER CODE BEGIN 3 */HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);HAL_Delay(1000);备注如果在 STM32CubeMX 中将 LED 引脚命名为
LED,生成的gpio.h文件就会定义LED_GPIO_Port和LED_Pin,供代码 使用。 -
将以下行添加到
platformio.ini文件以使用STM32CubeMX生成的配置头文件:platformio.iniboard_build.stm32cube.custom_config_header = yes -
单击左侧栏上的 PlatformIO 选项卡,然后单击
Upload按钮将固件上传到开发板。
现在您应该看到 BlackPill STM32 板上的 LED 闪烁。