跳到主要内容

使用 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 引脚编号。

您需要它来将固件烧录到开发板。您可以以低于 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

快速入门​

  1. 将 BlackPill STM32 板连接到 ST-LINK V2 编程器。

    ST-LINK V2 Clone
    按照上图连接 ST-LINK V2 编程器和 BlackPill STM32 开发板。

  2. 将 ST-LINK V2 编程器连接到计算机。

  3. 在 VSCode 中打开项目文件夹。

  4. 单击左侧栏上的 PlatformIO 选项卡,然后单击 Upload 按钮将固件上传到开发板。

    PlatformIO tab

现在您应该看到 BlackPill STM32 板上的 LED 闪烁。

使用 STM32CubeMX 生成初始代码​

使用STM32CubeMX,您可以配置STM32微控制器并为您的项目生成初始化代码,例如GPIO配置、时钟配置等。

  1. 打开STM32CubeMX并创建一个新项目。

  2. 选择STM32F411CE微控制器。

  3. 单击侧栏中的SYS,然后在“调试”下拉菜单中选择Serial Wire。

    Serial Wire

    信息

    请务必完成此设置,否则将无法向开发板烧录固件。

  4. 单击引脚分配和配置选项卡中的 LED 引脚,然后在模式下拉菜单中选择 GPIO_Output。

    BlackPill STM32 开发板的 LED 引脚是 PC13。如果使用其他开发板,请选择相应的 LED 引脚。

    GPIO Configuration

  5. 右键单击 LED 引脚并选择 Enter User Label 并将该引脚命名为 LED。

    提示

    设置标签后,即可在代码中通过名称引用该引脚。

    User Label

  6. 单击侧栏中的RCC,然后在高速时钟 (HSE) 下拉菜单中选择Crystal/Ceramic Resonator。

    RCC

  7. 单击Clock Configuration选项卡并配置时钟设置,如下所示:

    1. 在 HSE Value 字段中输入 25MHz。
    2. 在 PLL Source Mux 中选择 HSE,在 System Clock Mux 中选择 PLLCLK。
    3. 在 HCLK 字段中输入 100MHz,然后按 Enter 自动计算其他字段的值。
    备注

    BlackPill STM32 开发板使用 25MHz 晶振,因此 HSE Value 应设为 25MHz。

    Clock Configuration

  8. 单击Project Manager选项卡,将Toolchain Folder Location设置为要保存项目的位置,并生成代码。

现在您已经有了项目的初始化代码。

在 PlatformIO 中使用生成的代码​

  1. 将生成的代码复制到 PlatformIO 项目文件夹中的 src 文件夹中。

    如果使用 Linux 或 macOS,可以运行以下命令复制代码:

    cp -r <STM32CubeMX project folder>/Core/**/* <PlatformIO project folder>/src/
  2. 将以下两行添加到 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,供代码使用。

  3. 将以下行添加到platformio.ini文件以使用STM32CubeMX生成的配置头文件:

    platformio.ini
    board_build.stm32cube.custom_config_header = yes
  4. 单击左侧栏上的 PlatformIO 选项卡,然后单击 Upload 按钮将固件上传到开发板。

    PlatformIO tab

现在您应该看到 BlackPill STM32 板上的 LED 闪烁。

参考​