当前位置: 首页 > news >正文

STM32CubeMX的使用方法:使用STM32CubeMX生成基于STM32F103+HLA库的初始化代码,并在此基础上写出LED点灯程序

STM32CubeMX的介绍

当然可以!STM32CubeMXSTMicroelectronics(意法半导体) 提供的一款 图形化配置工具,专门用于 STM32 微控制器 的初始化代码生成。它可以帮助开发者快速配置 STM32 的外设、时钟、引脚映射,并自动生成相应的 C 代码,以便导入到 Keil、IAR、STM32CubeIDE 等开发环境中进行进一步开发。


主要功能

1. 图形化外设配置

  • 直观的 GPIO 配置(输入/输出/复用功能等)
  • 外设初始化(如 UART、I2C、SPI、ADC、TIM 等)
  • 低功耗模式设置

2. 时钟树配置

  • 提供 时钟树视图,可以直观地调整主时钟(HSE、HSI)、PLL 以及外设时钟,自动计算频率并检测是否超限。

3. 中间件支持

  • USB、FreeRTOS、LWIP(以太网协议栈)、FatFS(文件系统)等
  • 直接配置和启用 ST 官方提供的 HAL(硬件抽象层)库

4. 代码生成

  • 自动生成 STM32 HAL 库LL(低层)库 初始化代码
  • 代码可以直接导入到 Keil、IAR、STM32CubeIDE 等环境进行编译和调试

5. MCU 选择和引脚映射

  • 提供芯片型号选择界面,支持 STM32 全系列
  • 支持 引脚重映射(Remap),避免冲突

6. 板级支持包(BSP)

  • 可选 官方开发板(如 NUCLEODiscovery 板)
  • 自定义用户自己的 PCB 设计

使用流程

  1. 选择 MCU/开发板(如 STM32F103C8T6)
  2. 配置引脚和外设(如 USART2、I2C1、GPIO)
  3. 配置时钟树(如 HSE 8MHz,PLL 72MHz)
  4. 启用中间件(如 USB CDC、FreeRTOS)
  5. 生成代码(选择 Keil/STM32CubeIDE 工程)
  6. 导入 IDE 并编译/烧录

适合哪些开发者?

  • 初学者:不熟悉寄存器配置,想快速上手 STM32
  • 嵌入式开发者:希望提高开发效率,减少重复的初始化代码
  • 有经验的工程师:用于快速原型开发和测试

STM32CubeMX vs 传统寄存器编程

对比项STM32CubeMX (HAL/LL)传统寄存器编程
开发效率高,自动生成代码低,需要手写寄存器配置
代码可读性清晰,基于 HAL API复杂,涉及大量寄存器
灵活性适中,HAL 封装了一些细节高,可完全控制底层
适合场景快速开发,通用项目性能优化、底层驱动开发

小结结

STM32CubeMX 是 STM32 开发中 非常实用的工具,可以大大降低外设配置的难度,提高开发效率。如果你想快速完成 STM32 工程初始化,强烈建议使用它!🎯

确定是对哪个GPIO口进行操作

点此查看视频 的03分50秒开始看。

结论是我们需要对PC组的第13个引脚进行操作。

利用STM32CubeMX生成基于STM32F103+HLA库的初始化代码

打开STM32CubeMX

首先打开STM32CubeMX:
在这里插入图片描述

选择芯片(STM32F103C8T6)

然后点击中间的“ACCESS TO MCU SELECTOR”:
在这里插入图片描述
由于我们的主控芯片的型号是:STM32F103C8T6,所以我们在下面的位置搜索“STM32F103C8T6”:
在这里插入图片描述
然后在搜索结果中选择它(双击):
在这里插入图片描述
在这里插入图片描述

Project项配置

点击上图中的“Project Manger”切换到工程生成配置下的“Project”项:
在这里插入图片描述
然后再点击“Project Manger”下的“Code Gnerator”项:
在这里插入图片描述
我们需要把c文件和h头文件分开,所以勾选下面这个选项:
在这里插入图片描述

Pinout&Configuration项配置

接下来对GPIO的PC组的第13个引脚进行选择配置。
首先切换到“Pinout&Configuration项”:
在这里插入图片描述
然后按下面的操作找到引脚:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置成输出引脚:
在这里插入图片描述
在这里插入图片描述
这样引脚的配置就完了。

生成代码

点击右上角的GENERATE CODE
在这里插入图片描述
同意下载它的资料包:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
生成完毕,点击上图中的Close关闭,然后我们去工程目录中去看有没有相关生成。
在这里插入图片描述
可见有了。

生成的代码分析

点此查看视频 的06分23秒开始看。

STM32CubeMX生成的工程可以修改更新

在 STM32CubeMX修改相关配置后,再点击GENERATE CODE就更新了。在写main函数代码的时候把代码写到下面这些位置,那么自己写的代码不会丢失:
在这里插入图片描述
但得在配置的时候勾选下面这个选项:
在这里插入图片描述

打开STM32CubeMX生成的工程,添加自己的代码

添加代码

在这里插入图片描述
在main函数里添加下面这两句代码:

volatile int val = 1;while (1){HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, (GPIO_PinState)val);HAL_Delay(500);		val = !val;/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

在这里插入图片描述
在这里插入图片描述

注意:HAL_GPIO_WritePin() 的第三个参数应该是 枚举类型 GPIO_PinState,而 valint 类型,所以要显示转换一下,否则会报警告。

设置好ST-Link Debugger(烧写器)

然后按照博文 https://blog.csdn.net/wenhao_ir/article/details/146691445 设置好ST-Link Debugger(烧写器)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

编译,烧写,运行

然后编译:
在这里插入图片描述
烧写并运行:
在这里插入图片描述
烧写完成后,点击复位按键,即发现绿灯在闪烁了。
在这里插入图片描述

如何在STM32CubeMX中打开之前由STM32CubeMX生成的项目?

在STM32CubeMX中打开下图中这个文件即可:
在这里插入图片描述


http://www.mrgr.cn/news/96744.html

相关文章:

  • 数据结构实验1.3: 有序顺序表的归并
  • android 设置状态栏背景
  • 大模型-提示词(Prompt)技巧
  • OpenLayers:海量图形渲染之矢量切片
  • 4.1学习总结 拼图小游戏+集合进阶
  • 嵌入式EMC设计面试题及参考答案
  • 企业或个人linux服务器搭建
  • kubernetes》》k8s》》Deployment》》ClusterIP、LoadBalancer、Ingress 内部访问、外边访问
  • SOME/IP-SD -- 协议英文原文讲解10
  • 速查Linux常用指令
  • 【Harmonyos】项目开发总结--摇杆拖动侧重实现(适用游戏摇杆)
  • [GESP202503 C++六级题解]:P11963:环线
  • 论文阅读笔记:Denoising Diffusion Implicit Models (3)
  • 利用Canvas在紫微斗数命盘上画出三方四正
  • 大数据(4.3)Hive基础查询完全指南:从SELECT到复杂查询的10大核心技巧
  • 1.2 基于卷积神经网络与SE注意力的轴承故障诊断
  • C++学习day4
  • 企业linux常用服务搭建
  • SSH服务
  • 增加等IO状态的唤醒堆栈打印及缺页异常导致iowait分析