STM32CubeMX简介及使用

STM32CubeMX 简介及使用

1. 什么是 STM32CubeMX?

STM32CubeMX 是 ST 官方推出的 STM32 配置工具,用于 图形化配置 STM32 外设,并 自动生成初始化代码,大大简化 STM32 开发流程。

特点

图形化界面,直观操作(不用手动查找寄存器配置)
支持 STM32 全系列 MCU(F0/F1/F3/F4/F7/H7/L0/L1/L4/G0 等)
自动生成 STM32 HAL/LL 库代码,减少开发时间
支持 Keil、IAR、STM32CubeIDE 等 IDE
可直接配置 FreeRTOS,多任务开发更方便


2. 安装 STM32CubeMX

步骤 1:下载 STM32CubeMX

步骤 2:安装 STM32 固件包(MCU Support Package)

  • 首次启动 STM32CubeMX 时,会提示下载 MCU 相关的固件库(如 STM32F1、F4、H7 等)
  • 选择所需的 STM32 系列,点击 Install
  • 等待下载完成,即可创建新工程

3. STM32CubeMX 使用步骤(从零开始配置 STM32 工程)

步骤 1:创建新工程

  1. 打开 STM32CubeMX,点击 New Project
  2. 选择 STM32 芯片或开发板
    • 如果知道具体芯片型号(如 STM32F103C8T6),直接搜索选择
    • 如果使用官方开发板(如 NUCLEO-F103RB),可选择 Board Selector
  3. 点击 Start Project 进入配置界面

步骤 2:配置芯片外设

STM32CubeMX 提供了一个 MCU 引脚视图,可以直接点击 MCU 引脚 来启用外设功能,如 GPIO、UART、I2C、SPI、PWM 等。

(1) 配置 GPIO

  • 选择需要使用的 输入/输出引脚,设置模式:
    • 输入模式(Input) – 适用于按钮、传感器输入
    • 输出模式(Output) – 适用于 LED、蜂鸣器
    • 推挽/开漏模式(Push-Pull/Open Drain) – 适用于 I2C、驱动负载

(2) 配置 UART 串口

  • 选择 USART1(或 USART2、UART4),模式设为 Asynchronous
  • Parameter Settings 界面修改波特率(默认 115200)
  • 启用 NVIC(中断)支持,方便接收数据

(3) 配置 I2C

  • 选择 I2C1(或 I2C2),模式设为 I2C
  • 选择 Fast Mode (400kHz) 或 Standard Mode (100kHz)

(4) 配置 PWM

  • 选择 TIM1、TIM2 或 TIM3,模式设为 PWM Generation
  • 设置 PWM 频率、占空比,可用于 LED 亮度调节、电机控制

(5) 配置时钟

  • 进入 Clock Configuration 选项卡
  • 选择 HSE(外部晶振),并配置系统时钟(System Clock),常见配置:
    • 8MHz 外部晶振,系统时钟设为 72MHz(F1 系列)
    • 8MHz 外部晶振,系统时钟设为 168MHz(F4 系列)
    • 使用 PLL 倍频提高系统主频

步骤 3:生成代码

  • Project Manager 界面:
    • Project Name:填写工程名称(如 STM32_UART_Test
    • Toolchain/IDE:选择编译器(Keil / STM32CubeIDE / IAR)
    • Code Generator:勾选 Generate peripheral initialization as a pair of .c/.h files
  • 点击 Generate Code,STM32CubeMX 会自动生成 STM32 HAL 库代码

4. STM32CubeMX 生成的代码结构

生成的 STM32 工程目录结构如下:

│── Core/
│   ├── Inc/                   // 头文件目录
│   │   ├── main.h             // 主函数头文件
│   │   ├── stm32f1xx_hal_conf.h  // HAL 库配置
│   ├── Src/                   // 源代码目录
│   │   ├── main.c             // 主函数入口
│   │   ├── stm32f1xx_it.c     // 中断处理
│── Drivers/
│   ├── STM32F1xx_HAL_Driver/  // HAL 库
│── Middlewares/               // 中间件(如 FreeRTOS)
│── Startup/                   // 启动文件
│── STM32F1xx_HAL_Driver/      // STM32 HAL 库
│── Makefile                   // GNU Makefile(适用于 CubeIDE)
│── .cproject / .project       // Eclipse 工程文件(适用于 CubeIDE)

5. 如何编写代码并下载到 STM32

步骤 1:打开工程

  • 如果选择 Keil,直接用 Keil MDK 打开 .uvprojx 工程文件
  • 如果选择 STM32CubeIDE,直接用 CubeIDE 导入

步骤 2:编写代码

main.c 里,我们会看到 MX_GPIO_Init()MX_USART1_UART_Init() 之类的初始化函数。例如:

int main(void) {
    HAL_Init();                  // 初始化 HAL 库
    SystemClock_Config();         // 配置系统时钟
    MX_GPIO_Init();               // 初始化 GPIO
    MX_USART1_UART_Init();        // 初始化串口

    while (1) {
        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // 翻转 LED
        HAL_Delay(500);
    }
}

步骤 3:编译 & 下载

  • 连接 ST-Link 仿真器
  • 点击 编译(Build)
  • 点击 下载(Download),烧录到 STM32

6. 高级应用

(1) FreeRTOS 多任务

  • 在 STM32CubeMX Middleware 选项中 启用 FreeRTOS
  • STM32CubeMX 会自动生成任务调度代码
  • cmsis_os.h 里创建 FreeRTOS 任务
void Task1(void *argument) {
    while (1) {
        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
        osDelay(1000);
    }
}

(2) 使用 LL 库

如果需要更高效的代码(比 HAL 库快),可以:

  • Project Manager → Advanced Settings 选择 LL 库
  • STM32CubeMX 生成的代码会使用 LL API(寄存器级操作)

7. 结论

STM32CubeMX 是 STM32 开发必备工具,适合新手和专业开发者
自动生成 HAL/LL 初始化代码,大幅减少手写寄存器代码的工作量
支持 Keil、IAR、STM32CubeIDE,适用于各种开发需求
支持 FreeRTOS,方便开发多任务系统

 

📌 建议新手从 STM32CubeMX + STM32CubeIDE 开始,逐步深入学习 HAL、LL、裸机开发! 🚀

评论
列表