STM32开发利器:STM32CubeMX

       这篇博客篇幅不长,主要是为大家介绍ST公司推出的STM32CubeMX开发工具,当成下周更新STM32 10个项目工程的预备篇,同时FPGA FPGA 20个例程篇:8.SD卡任意地址的读写,代码部分已经编写完毕,对应博客正在整理中,如图1所示即为STM32CubeMX的图标。

图1 STM32CubeMX图标

       在介绍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等快捷键方便拉线、打孔、铺铜等常规操作,让工程师在面对快速的项目开发和迭代中,能把更多精力放在逻辑层、应用层开发上,因为手工配置底层引脚,中断类型等,人都会存在大意的时候,出错单步仿真也不易排查出问题。

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

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

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

      STM32开发利器:STM32CubeMX_第1张图片

 图2 STM32CubeMX配置STM32F429IGT6芯片

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

STM32开发利器:STM32CubeMX_第2张图片

  图3 STM32CubeMX环境下选择STM32F103VET6芯片

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

STM32开发利器:STM32CubeMX_第3张图片

STM32开发利器:STM32CubeMX_第4张图片

图4 STM32CubeMX环境下配置RCC时钟

 

STM32开发利器:STM32CubeMX_第5张图片

    图5 STM32CubeMX环境下配置UART1串口

     STM32开发利器:STM32CubeMX_第6张图片

 图6 STM32CubeMX环境下生成KEIL工程

 STM32开发利器:STM32CubeMX_第7张图片

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

STM32CubeMX下载链接:

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

ST官方HAL库说明文档下载链接:

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

你可能感兴趣的