【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. 点击生成代码。


相关推荐
夜月yeyue9 小时前
Linux 调度类(sched_class)
linux·运维·c语言·单片机·性能优化
日更嵌入式的打工仔9 小时前
实用:嵌入式执行时间测量常用方法
笔记·单片机
dreamczf11 小时前
如何确定项目中的产品选型-物联网设备
单片机·物联网·嵌入式软件
Free丶Chan11 小时前
关于KEIL下载提示UnKown CPU(STM32)
stm32·单片机·嵌入式硬件
boneStudent12 小时前
Day35:DMA 原理与架构
stm32·单片机·嵌入式硬件
Vizio<12 小时前
STM32HAL库开发笔记-GPIO输入
笔记·stm32·单片机·嵌入式硬件
硅农深芯13 小时前
什么时候要用开漏输出(open drain output)?
单片机·嵌入式硬件·gpio·开漏输出·open drain
电子工程师-C5114 小时前
基于51单片机的家居环境监测系统
单片机·嵌入式硬件·51单片机
Big_潘大师14 小时前
十轴IMU模块-AHRS角度姿态、加速度计、磁力计、气压陀螺仪传感器
stm32·单片机·嵌入式硬件·arduino·陀螺仪
ghomeway16 小时前
keil使用虚拟的调试串口给调试助手发送数据
单片机·嵌入式硬件