打印
[其他ST产品]

STM32开发利器:STM32CubeMX

[复制链接]
343|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
    这篇博客篇幅不长,主要是为大家介绍ST公司推出的STM32CubeMX开发工具,当成下周更新STM32 10个项目工程的预备篇,同时FPGA FPGA 20个例程篇:8.SD卡任意地址的读写,代码部分已经编写完毕,对应博客正在整理中,如图1所示即为STM32CubeMX的图标。


图1 STM32CubeMX图标

使用特权

评论回复
沙发
caoyunhj2301|  楼主 | 2023-1-26 13:11 | 只看该作者
  在介绍STM32CubeMX之前,我们需要知道HAL库这个概念,实际在早些年大概2018年以前吧,大家做STM32工程开发,用的最多的是标准库,标准库自出道超过 10 年以来受广大使用者推崇,就算现在2022年还有一部分工程师、公司仍在继续使用。不过现实情况很残酷,ST 官方已经不再更新 STM32 标准固件库,比如STM32F1系列标准固件库在 2013 年后没有正式发布更新版本,类似于之前大家在开发FPGA时都用XILINX推出的ISE环境,但ISE在2014年后就没有更新版本,XILINX把所有的精力都放在了VIVADO环境。伴随HAL库的兴起,ST推出了STM32CubeMX开发工具,简单地说这个工具可以将STM32芯片的底层配置通过图形化界面配置,这样就极大限度内减少了工程师的工作量,这就好比做FPGA设计的时候,使用了GVIM计数器和状态机模板;在做PCB设计的时候,使用了skill等快捷键方便拉线、打孔、铺铜等常规操作,让工程师在面对快速的项目开发和迭代中,能把更多精力放在逻辑层、应用层开发上,因为手工配置底层引脚,中断类型等,人都会存在大意的时候,出错单步仿真也不易排查出问题。

使用特权

评论回复
板凳
caoyunhj2301|  楼主 | 2023-1-26 13:13 | 只看该作者
STM32CubeMX 可以直观的选择 STM32 微控制器、配置微控制器、自动处理引脚冲突、动态设置确定时钟树、动态确定参数设置的外围和中间件模式和初始化。STM32CubeMX 生成的代码可以在 KEIL、IAR、GCC 等编程软件上面使用。所以简单地说STM32CubeMX 本身就是一个工具软件,我们只要在上面通过图形化配置就可以生成STM32 功能代码工程,这个代码工程已经包括了必要的外设初始化程序,这样节省我们的工作量,把工作重点放在项目逻辑层、应用层的实现。

使用特权

评论回复
地板
caoyunhj2301|  楼主 | 2023-1-26 13:14 | 只看该作者
HAL 的全称是:Hardware Abstraction Layer (硬件抽象层),HAL 位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。HAL 库是一个由 ST公司基于硬件抽象层而设计的软件函数包,它由程序、数据结构、宏等组成,包括了微控制器所有外设的性能特征。此外HAL函数库包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间 API,所以说通过使用 HAL 库,工程师不需要花过多精力去深入掌握底层硬件细节,就可以应用STM32的每个外设,实现快速二次开发的目的。

使用特权

评论回复
5
caoyunhj2301|  楼主 | 2023-1-26 13:26 | 只看该作者
如图2所示,是笔者之前转产项目中的STM32CubeMX配置,使用了STM32CubeMX工具对一颗STM32F429IGT6芯片进行硬件初始化配置,该芯片驱动了一颗SDRAM,外挂了一颗EEPROM和一颗FLASH,还有其他外设例如蜂鸣器、编码器、按键、电容触摸屏,芯片内部有定时器中断刷新屏幕,有三个UART DMA空闲中断,也上了Freertos操作系统、Emwin人机界面、FATS32 U盘识别,如果这些底层都手工配置的话,平心而论是个非常烦琐和浩大的工程,且很容易出错,而步入工作岗位以后,现实是私企老板、产品经理、项目负责人等各路人马会不断催促项目进度,这时也就体现了STM32CubeMX的价值,在这篇博客最后,笔者也附带了STM32CubeMX学习教程和STM32CubeMX安装包的下载链接,供大家学习交流。

使用特权

评论回复
6
caoyunhj2301|  楼主 | 2023-1-26 13:28 | 只看该作者

图2 STM32CubeMX配置STM32F429IGT6芯片

使用特权

评论回复
7
caoyunhj2301|  楼主 | 2023-1-26 13:29 | 只看该作者
谈到STM32CubeMX配置细枝末节的地方有很多,很难在一篇博客里逐一列举出来,只能说工作用到哪里再去对照着研究哪里即可,这里举个简单地例子我们用STM32CubeMX配置野火开发板上的STM32F103VET6芯片上的串口,如图3所示,我们先选择STM32F103VET6芯片再单击Start Project选项。

  图3 STM32CubeMX环境下选择STM32F103VET6芯片

使用特权

评论回复
8
caoyunhj2301|  楼主 | 2023-1-26 13:33 | 只看该作者
  如图4和图5所示,我们在STM32CubeMX环境下配置好RCC时钟,这里由一个外部8Mhz的时钟通过芯片内部倍频产生一个72Mhz的主频时钟,直接配置UART1的引脚和115200的波特率,在图6下选择生成可以用KEIL 5打开的工程文件,最后如图7所示在KEIL5下打开STM32CubeMX环境下生成的底层配置工程,再进去下一步的二次开发。


图4 STM32CubeMX环境下配置RCC时钟

使用特权

评论回复
9
caoyunhj2301|  楼主 | 2023-1-26 13:48 | 只看该作者
本帖最后由 caoyunhj2301 于 2023-1-26 13:55 编辑



   图5 STM32CubeMX环境下配置UART1串口

使用特权

评论回复
10
caoyunhj2301|  楼主 | 2023-1-26 13:57 | 只看该作者

图6 STM32CubeMX环境下生成KEIL工程

使用特权

评论回复
11
caoyunhj2301|  楼主 | 2023-1-26 14:02 | 只看该作者

  图7 KEIL5环境下打开STM32CubeMX生成的底层配置代码

使用特权

评论回复
12
caoyunhj2301|  楼主 | 2023-1-26 14:03 | 只看该作者
STM32CubeMX下载链接:

链接:https://pan.baidu.com/s/1k-kFy2K9r-ifEcxx1ACobg
提取码:vj1o

使用特权

评论回复
13
caoyunhj2301|  楼主 | 2023-1-26 14:04 | 只看该作者
ST官方HAL库说明文档下载链接:

链接:https://pan.baidu.com/s/1IiPtPrY_EVDJQPtFTgHpsw
提取码:nmww

使用特权

评论回复
14
sfd123| | 2023-1-26 15:14 | 只看该作者
听说这玩意挺好的,还没用!

使用特权

评论回复
15
lulugl| | 2023-1-27 07:47 | 只看该作者
caoyunhj2301 发表于 2023-1-26 14:04
ST官方HAL库说明文档下载链接:

链接:https://pan.baidu.com/s/1IiPtPrY_EVDJQPtFTgHpsw

是中文文档吗?要是就最好了,谢谢分享!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

285

帖子

2

粉丝