STM32CubeMX-基本使用

参考 B 站教程

介绍

STM32CubeMX, STM32 Configurable Middleware and Libraries for X-Cube, 是一个用于图形化配置 STM32 的工具.

这里的 X-Cube 是 STMicroelectronics 为 STM32 微控制器系列提供的一系列软件包和中间件组件的命名约定. X-Cube 系列为不同的应用场景提供了专门的软件套件, 以简化开发过程并提供丰富的功能.

相关概念

HAL 和 LL

HAL, Hardware Abstraction Layer, 其提供了一组 API (应用程序编程接口), 用于访问 STM32 微控制器的硬件功能和外设. 它提供了一种统一的界面, 使开发人员能够以相似的方式访问不同型号和系列的 STM32 微控制器.

LL, Low-Level, 应该就是标准库, 其因每一个芯片的不同而变化, 提供更为底层的控制.

标准库似乎官方似乎不支持了, 在官网每搜到相关的下载方式, 可以暂时在 http://47.111.11.73/docs/index.html 下载.

而 HAL 库在 STM32CubeMX 中则能直接下载.

LQFP64 和 WLCSP64 封装类型

LQFP64, Low Profile Quad Flat Package, 是一种低轮廓四边形平面封装. LQFP 封装通常由矩形的外部引脚排列组成, 引脚位于封装的四个边缘上. 数字中的数字 64 表示封装中的引脚数量, 其提供了较好的散热性能和机械强度.

如:

WLCSP, Wafer-Level Chip Scale Package, 是一种芯片级尺寸封装. WLCSP 封装将芯片直接封装在导电的基底上, 成一个非常紧凑的封装. 数字中的数字 64 表示封装中的引脚数量. WLCSP 封装具有非常小的尺寸, 适用于空间受限的应用.

如:



一般在 STM32CubeMX 上安装 HAL 库时一般选择 LQFP64 封装的.

PLL 相关

PLL, Phase-Locked Loop, 是一种电子电路,用于生成稳定的输出信号, 其频率和相位与输入信号相关. 它通常用于时钟生成, 频率合成, 时钟恢复和调制解调等应用中.

PLL 电路的输入可以是多种信号源, 包括外部晶振, 内部时钟源等.

PLL Source Mux

PLL Source Multiplexer, 即 PLL 的输入源选择器, 从多个输入源中选择一个作为输入信号.

PLLMul

PLL Multiplier, 即 PLL 的倍频系数, 用于将输入信号的频率提高到所需的输出频率. 比如设置为 8, 则输出频率则为输入频率的 8 倍.

HSI

HSI, High Speed Internal, 指芯片内部的告诉时钟源, 其由芯片内部的振荡电路产生.

HSE

HSE, High Speed External, 指外部高速时钟源.

GPIO 的八种工作模式

4 种输出模式为:

  • General porpose output push-pull, 通用推挽输出, 此时若输出高电平时, 引脚提供电源电压, 若输出低电平时, 引脚提供接地电压, 具有较强驱动能力 (因为既能提供高电平 (push) 又能提供低电平 (pull), 所以是 push-pull)
  • General porpose output open-drain, 仅在输出低电平时, 引脚提供接地电压
  • Alternate function output push-pull, 引脚被配置为某种备用功能, 其余和 General porpose 的相同
  • Alternate function output open-drain, 引脚被配置为某种备用功能, 其余和 General porpose 的相同

4 种输入模式为:

  • floating input, 引脚处于高阻抗状态, 不连接到特定电压源, 内部没有上拉或下拉电阻, 即此时的引脚点位不确定
  • pull-up, 引脚有内部上拉电阻, 在没有外部输入时, 引脚被拉高到电源电压, 而当外部设备连接到引脚并输出低电平时, 引脚电平会被拉低
  • pull-down, 引脚有内部下拉电阻, 在没有外部输入时, 引脚被拉低到地电压, 当外部设备连接到引脚并输出高电平时, 引脚电平会被拉高
  • analog mode, 引脚用于接收模拟信号, 连接到模数转换器 (ADC) 或其他模拟电路

安装

在 Archlinux 上可通过 AUR 下载:

1
yay -S stm32cubemx

基本使用

运行:

1
$ stm32cubemx

(或者用其他启动器打开)

基本界面为:

管理固件安装的界面为:

在上方的 Help->Updater settings.. 下, 可以修改固件安装的位置:

安装了的固件为绿色:

查看 Repository 目录也可以看到多了个目录:

也可以直接把下载到本地的库放在这个目录下.

创建 project 的基本流程

先选择 MCU (MicroController Unit):

之后在左上方搜索, 在中间选择要使用的 MCU 具体型号, 最后在右上角点击 “Start Project”:

之后就会打开相应的图形化配置界面:

设置 Debug

在图形化的配置界面下, 点击 System Core->SYS->Debug, 如果使用的 STLink, 则选择 Serial Wire:

设置外部 RCC

在图形化的配置界面下, 点击 System Core->RCC->Mode, 配置好 High Speed ClockLow Speed Clock:

之后点击上方的 Clock Configuration 进行具体的 RCC 配置:

引脚配置

点击上方的 Pinout & Configuration, 即一开始的界面, STM32 芯片的引脚一般都是复用的, 配置好一个引脚后, 其会变为绿色, 多出一个图钉, 且旁边会写相关功能 (这里以 PB8 为例):

可以在 System Core 之下具体配置:

生成代码

点击上方 Project Manager 进行相关配置:

一般也会勾选 Code Generator 下的 “Generate peripheral…” 这一条, 为每一个外设生成对应的 .c.h 文件:

到这里 STM32CubeMX 的任务基本就完成了.

生成的代码配置 Nvim 的自动补全

这里不细讲 Nvim 配置, 其实只是记录下, 生成代码时, 选用 cmake 即可, 此时用 lsp-config'mason 安装的 clang LSP 就会其作用了:

注意要提前安装的一些软件和库:

  • arm-none-eabi-binutils
  • arm-none-eabi-gcc
  • arm-none-eabi-gdb
  • arm-none-eabi-newlib

在 Archlinux 下可直接用 pacman 安装:


STM32CubeMX-基本使用
http://example.com/2024/04/09/STM32CubeMX-基本使用/
作者
Jie
发布于
2024年4月9日
许可协议