【STM32实践篇】:STM32CubeMX 的使用

文章目录

  • [1. 安装 STM32CubeMX](#1. 安装 STM32CubeMX)
  • [2. 安装 MCU 固件包](#2. 安装 MCU 固件包)
    • [2.1 设置软件库文件路径](#2.1 设置软件库文件路径)
    • [2.2 管理嵌入式软件包](#2.2 管理嵌入式软件包)
  • [3. 使用 CubeMX 新建项目](#3. 使用 CubeMX 新建项目)
    • [3.1 选择 MCU 创建项目](#3.1 选择 MCU 创建项目)
    • [3.2 MCU 图形化配置界面](#3.2 MCU 图形化配置界面)
      • [3.2.1 引脚与配置](#3.2.1 引脚与配置)
      • [3.2.2 时钟配置](#3.2.2 时钟配置)
      • [3.2.3 项目管理](#3.2.3 项目管理)
  • [4. 点亮 LED 灯](#4. 点亮 LED 灯)
    • [4.1 硬件电路](#4.1 硬件电路)
    • [4.2 CubeMX 设置](#4.2 CubeMX 设置)

1. 安装 STM32CubeMX

注意事项:

  1. 安装目录不能带有汉字、空格和非下划线的符号,因为 CubeMX 对中文的支持不太好。
  2. CubeMX 需要用到 Java 运行环境 JRE,建议开发人员直接下载安装 JDK。

我设置的安装目录:D:\IDE\ST\STM32CubeMX

2. 安装 MCU 固件包

2.1 设置软件库文件路径

  • 菜单项:Help --> Connection & Updates
  1. MCU 固件包和扩展包安装路径,建议设置后就不再更改,我设置的路径:D:\IDE\ST\STM32Cube\Repository
  2. 设置 CubeMX 的更新方式为:手动检查更新
  3. 设置 CubeMX 启动时是否自动刷新已安装软件库的数据和文档为:不在 CubeMX 启动时自动刷新

2.2 管理嵌入式软件包

  • 菜单项:Help --> Manage embedded software packages

找到所需系列芯片,例如:STM32F4,选择最新版本,点击 Install 安装。

在路径 D:\IDE\ST\STM32Cube\Repository\STM32Cube_FW_F4_V1.28.3 下面可以看到安装好的固件库。

3. 使用 CubeMX 新建项目

3.1 选择 MCU 创建项目

  • 菜单项:File --> New Project
  1. 按照筛选条件选择 MCU,如果已知具体型号,可以在搜索框直接输入。
  2. 通过筛选或搜索的 MCU 列表,会显示出具体型号,封装,Flash,RAM 等参数,单击星号收藏,双击MCU型号进入项目管理视图。
  3. MCU 资料显示区域。

3.2 MCU 图形化配置界面

  1. 引脚与配置:对 MCU 的系统内核,外设,中间件和引脚进行配置。
  2. 时钟配置:通过时钟树对 MCU 的各个时钟信号频率配置。
  3. 项目管理:项目的一些设置。
  4. 工具:进行功耗计算等。

3.2.1 引脚与配置

  1. 组件列表:MCU 可以配置的系统内核,外设和中间件列表,可分组显示或者按照字母顺序显示。
  2. 组件的模式和配置:例如组件选中 RCC,可以在上方设置模式,下方配置参数。
  3. 引脚视图:显示各引脚设置情况。
  • 亮黄色引脚:电源或接地引脚,例如:VDD。
  • 黄绿色引脚:一种功能的系统引脚,例如:NRST,这些引脚不能进行配置。
  • 未配置功能的引脚为灰色。
  • 已经配置功能的引脚为绿色。

在引脚上单击鼠标左键,弹出引脚功能选择菜单,例如引脚在 PF9 上单击时,可以看到 PF9 可以作为 GPIO,ADC,定时器等使用:

将 PF9 引脚设置好功能后,在引脚上单击鼠标右键,会调出一个快捷菜单。

  • Enter User Label:输入用户标签,标签将取代原来的引脚信号名称。
  • Signal Pinning/Unpinning:信号绑定/解绑,将引脚与功能绑定/解绑。
  1. 系统视图:显示 MCU 已经设置的各种组件。

3.2.2 时钟配置

先设置 RCC 的模式,将 HSE 和 LSE 都设置为使用外部晶振,并且启用 MCO1 和 MCO2,MCO2 与音频时钟输入不能同时使用。

启用 RTC。

时钟源,时钟信号或选择器的作用如下:

  1. HSE 时钟源:设置为使用外部晶振,开发板的是 8MHz 晶振,填入8。
  2. HSI RC 振荡器:频率为 16MHz 的时钟信号。
  3. PLL 时钟源选择器:输入时钟选择 HSE 或 HSI,通过分频和倍频产生时钟信号,输出时钟信号有 PLLCLK,48MHz 时钟信号,PLLI2S。
  4. 系统时钟选择器:系统时钟 SYSCLK 是为 MCU 大部分组件提供时钟信号的时钟源,输入时钟有 HSE,HSI,PLLCLK。Enable CSS 按钮可以启用时钟安全系统,使用 HSE 时该按钮才有效,当 HSE 发生故障,会发出一个 CSSI 的中断信号,自动切换到 HSI 作为时钟源。
  5. 系统时钟 SYSCLK:文本框不能修改它的值,该时钟经过 AHB 预分频器后生成 HCLK 时钟信号。
  6. HCLK 时钟:CPU 的时钟信号,为 AHB 总线,内核,APB1 总线和 APB2 总线提供时钟,HCLK 最高频率 168MHz,可以在文本框修改,例如输入 72 后,软件会自动进行修改。
  7. 音频时钟输入:在 RCC 中去掉 MCO2,选择 Audio Clock Input(I2S_CKIN),就可以在此输入一个外部的时钟源作为 I2S 接口的时钟信号。
  8. I2S 接口时钟源选择器:从两个输入时钟 PLLI2SCLK,I2S_CKIN 里面选择一个作为 I2S 接口的时钟信号。
  9. MCO 时钟输出和选择器:MCO 时 MCU 为外部设备提供的时钟源。
  10. LSE 时钟源:固定为 32.768MHz,作为 RTC 的时钟源,经过多次分频后,可以得到精确的 1Hz 信号。
  11. LSI RC 振荡器:MCU 内部产生的 32KHz 的时钟信号,可以为 RTC 和 IWDG 提供时钟信号。
  12. RTC 时钟选择器:可选时钟源 LSI,LSE 和 HSE,要使 RTC 精度高,应该选择 32.768MHz 的 LSE 作为时钟源。

3.2.3 项目管理

  1. Project 页面:项目名称,保存路径,导出代码的 IDE 软件等。
  • C 语言程序需要一个 main() 函数,不勾选。
  • 选择导出的 C 语言程序的工具链或 IDE 软件。
  • 其余选项暂时保持默认。
  1. Code Generator 页面:设置生成 C 语言代码的一些选项。
  • 勾选,为每一种外设生成的初始化代码将会有 .c和.h 两个文件。
  • 设置所有自由引脚类型为 Analog,这样可以优化功耗。
  • 启用 Full Assert ,HAL 库中每个函数都会对函数的输入参数进行检查,如果检查出错,会返回出错代码的文件名和所在行。
  1. Advanced Settings 页面,生成 C 语言代码的一些高级设置,例如:外设初始化代码是使用 HAL 库还是 LL 库。
  • 给组件选择使用HAL库还是LL库。
  • 勾选此项,在main()函数的外设初始化部分不会调用这个函数,但是函数的完整代码还是会生成的,如何调用由编程者自己决定。
  • 是否在函数原型前面加上关键字 static,使文件变为文件内的私有函数。如果在 Code Generator 页面勾选了 Generate peripheral initialization as a pair of '.c/.h' files per peripheral,则无论是否勾选 Visibility(Static) ,外设的初始化原型函数前面都不会加 static 关键字,因为在 .h文件里声明的函数原型对外界就是可见的。

4. 点亮 LED 灯

4.1 硬件电路

从原理图中可以看出,控制引脚 PF9,PF10为GPIO输出引脚,且输出低电平可以点亮 LED 灯。

4.2 CubeMX 设置

  1. PF9 和 PF10 设置为推挽输出低电平,写上标签 LED0 和 LED1。

  2. 时钟设置:HSE 选择晶振 8MHz,HCLK 设置为168MHz。

  3. 组件 SYS 设置为串行调试接口

  4. 设置项目名称和生成 .c和.h对。

  5. 点击生成代码。


相关推荐
番茄灭世神1 小时前
OTA远程升级STM32固件
stm32
yuanjj883 小时前
域格移芯平台模块FTP下载应用
单片机·物联网·网络协议
古译汉书3 小时前
嵌入式笔记(个人总结)
数据结构·笔记·stm32·单片机·嵌入式硬件
bai5459364 小时前
STM32 定时器(Timer)
stm32·单片机·嵌入式硬件
沐欣工作室_lvyiyi11 小时前
基于STM32的宠物自动喂食器(论文+源码)
stm32·嵌入式硬件·毕业设计·宠物
Bona Sun18 小时前
单片机手搓掌上游戏机(十四)—pico运行fc模拟器之电路连接
c语言·c++·单片机·游戏机
学生哥-_-18 小时前
STM32点亮WS2812 RGB灯板展示像素图片(一种较方便的取色值数据的方法)
stm32·单片机·嵌入式硬件
西欧伯爵18 小时前
模拟电路入门四
单片机·嵌入式硬件·集成电路
偶像你挑的噻18 小时前
12-Linux驱动开发- SPI子系统
linux·驱动开发·stm32·嵌入式硬件