这篇博客篇幅不长,主要是为大家介绍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安装包的下载链接,供大家学习交流。

图2 STM32CubeMX配置STM32F429IGT6芯片

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

图3 STM32CubeMX环境下选择STM32F103VET6芯片

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

图4 STM32CubeMX环境下配置RCC时钟

图5 STM32CubeMX环境下配置UART1串口

图6 STM32CubeMX环境下生成KEIL工程

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

STM32CubeMX下载链接:

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

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

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

STM32开发利器:STM32CubeMX相关推荐

  1. STM32CubeMX和STM32CubeIDE组合,定义STM32开发新方式

    在2018年3月份,本人写下了一篇博文<几种STM32开发IDE的比较与选择>,当时ST公司已经收购了Atollic公司,TrueSTUDIO 9.0变成一个免费的STM32开发IDE工具 ...

  2. stm32简单小实例_抓住蝶粉的心,STM32有“利器”

    尽管2020年注定是艰难的一年,但意法半导体STM32仍尽力为广大蝶粉提供了面对面沟通碰撞的机会. 9月13日-9月25日,为期13天的2020年意法半导体STM32全国巡回研讨会圆满落幕.作为工程师 ...

  3. stm32简单小实例_抓住蝶粉的心,STM32有“利器”!

    出品 21ic中国电子网 蔡璐 网站:21ic.com 尽管2020年注定是艰难的一年,但意法半导体STM32仍尽力为广大蝶粉提供了面对面沟通碰撞的机会.9月13日-9月25日,为期13天的2020年 ...

  4. STM32开发入门及实战 (1)

    本博客的编写目的: 一.自我总结,记录. 二.分享,输出,加深思考. 三.不作细致如书本般编排,尽管那样的排版很好看,但是过于耗费时间,还有很多东西没有必要说明,完全可以自己去解决,但还是尽量做好排版 ...

  5. 使用simulink进行stm32开发1

    使用simulink进行stm32开发1 准备工作 步骤说明 为了学习MBD的开发流程,使用stm32+simulink进行开发实验,做此记录 准备工作 软件工具准备: 1. Matlab (Simu ...

  6. STM32开发入门及实战

    本博客的编写目的: 一.自我总结,记录. 二.分享,输出,加深思考. 三.不作细致如书本般编排,尽管那样的排版很好看,但是过于耗费时间,还有很多东西没有必要说明,完全可以自己去解决,但还是尽量做好排版 ...

  7. 配置clion用于stm32开发

    配置clion用于stm32开发 以stm32f103ZET6为例 2022.4.8更新(解决了OCD无法调试的问题) 之前配置完环境后,就只是实验了一下烧录的功能,一直没有尝试使用ocd的调试功能. ...

  8. CLion配置STM32开发环境(JLink GDB Server)

    Hi,我是嘉赫. 终于忍受不了Keil了,需要换一个Windows和Mac通用的STM32开发环境. 其实早就受不了Keil了,虽然各路大佬都有很多其他IDE的环境配置,但是总觉得差强人意.现在终于发 ...

  9. 物联网之STM32开发一(基础知识)

    一.ARM体系结构概述 内容概述: 必须要get到的ARM知识 Cortex-M0处理器介绍 认识STM32 STM32F0硬件平台介绍 必须要get到的ARM知识: STM32的核心部件CPU是Co ...

最新文章

  1. 发推吐槽职场性别歧视后,苹果女高管被无限期行政休假
  2. oracle找到引起账户锁定的ip,Oracle 找到引起账户锁定的IP
  3. 信息系统项目管理案例2
  4. swift3.0截取View生成图片 图片截取成新图片
  5. 分享自己写的一个贪吃蛇的游戏(Linux)
  6. 广州python平均薪资_11 月全国程序员平均工资出炉,看看的你得薪资跟上平均水平了吗。...
  7. 常见运行时异常 java 114982568
  8. ORACLE 10g创建单实例 ASM
  9. java poi导出excel模板_Java poi实现导出excel,添加数据有效性,生成模板
  10. vue省市区联动插件---distpicker
  11. c++ 专题 2 面向对象:常量成员函数
  12. HTML中图片文件名字有括号,文件批量顺序重命名去掉括号
  13. C# Winform如何打开PDF文件
  14. 如何修复计算机的无限功能,Win10系统自动修复时出现无限死循环或提示无法修复怎么办 如何禁用自动修复服务...
  15. 2022.1.3bili上面登录:139 733xxx
  16. 基于神威·太湖之光的超大规模图计算系统“神图” 2019-12-16 14:10:29 作者:Fma
  17. 如何整理撰写舆情信息报告的方法技巧
  18. Windows 安全系列05-U盘安全
  19. 毕业论文为什么要查重复率?
  20. 用matlab画汽车,用matlab绘制汽车的爬坡度图

热门文章

  1. Linux 配置本地域名项目
  2. Windows 和Linux利用tftp协议传送文件
  3. cuda10.1安装
  4. wsl1升级到 wsl2 后高cpu占用解决方案
  5. C语言 文件合成器代码(用图片掩盖.rar文件)
  6. 神经网络正向传播步骤和反向传播
  7. 开博啦!学如逆水行舟,不进则退
  8. c语言模拟银行ATM的程序,简单模拟银行ATM取款系统 | C/C++程序员之家
  9. 车好多让10万亿元的汽车消费市场跳起来
  10. html css修改span的字体的值,一、编辑网页文本(span标签与字体属性、文本属性)...