document.write('
')
  • 深入理解STM32开发的HAL库

    时间:2022-03-30 14:33:12点击量:106 作者:子非鱼

    前言

    ??相比较早几年使用标准库开发来讲,最近几年HAL库的使用是越来越多,那么我们开发应当使用哪一种呢,本文着重介绍常用的几种开发方式及相互之间的区别,白猫也好、黑猫也好,抓到耗子就是好猫。

    STM32三种开发方式

    ??通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的。一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发。

    ??网上关于标准库、HAL库的描述相信是数不胜数??墒且桓龆杂诤芏喔杖朊诺呐笥鸦故敲环ê苤惫鄣娜フ嬲私庹庑┎煌⒎⒎绞奖舜酥涞那?,所以笔者想以一种非常直白的方式,用自己的理解去将这些东西表述出来,如果有描述的不对的地方或者是不同意见的也可以大家提出。

    1、直接配置寄存器

    ??不少先学了51的朋友可能会知道,会有一小部分人或是教程是通过汇编语言直接操作寄存器实现功能的,这种方法到了STM32就变得不太容易行得通了,因为STM32的寄存器数量是51单片机的十数倍,如此多的寄存器根本无法全部记忆,开发时需要经常的翻查芯片的数据手册,此时直接操作寄存器就变得非常的费力了。但还是会有很小一部分人,喜欢去直接操作寄存器,因为这样更接近原理,知其然也知其所以然。

    2、标准库

    ??上面也提到了,STM32有非常多的寄存器,而导致了开发困难,所以为此ST公司就为每款芯片都编写了一份库文件,也就是工程文件里stm32F1xx…之类的。在这些 .c .h文件中,包括一些常用量的宏定义,把一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。也是目前最多人使用的方式,也是学习STM32接触最多的一种开发方式,我也就不多阐述了。

    3、HAL库

    ??HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)??馊缙涿?,很抽象,一眼看上去不太容易知道他的作用是什么。

    ??它的出现比标准库要晚,但其实和标准库一样,都是为了节省程序开发的时期,而且HAL库尤其的有效,如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成。也就是说,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。

    ??并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴,注意是相通外设,意思也就是不能无中生有,例如F7比F3要多几个定时器,不能明明没有这个定时器却非要配置,但其实这种情况不多,绝大多数都可以直接复制粘贴。是而且使用ST公司研发的STMcube软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件,可以说是方便至极,但是方便的同时也造成了它执行效率的低下,在各种论坛帖子真的是被吐槽的数不胜数。

    HAL库固件库安装与用户手册1、首先设置让Cube可以自动联网下载相关固件库选择updater Settings

    ??设置如下

    2、根据芯片选择所需固件

    ??版本是向下兼容的,可以直接选择最新版。但如果觉得最新版太大,可以阅读下面的Main Changes.能够支持你目前的芯片就好。

    ??选好了,点击Install Now就行,过程可能有点长。建议直接官网下载到本地,再安装文件会被下载到如下位置,建议更改此目录,不要选在C盘?。?!

    3、寻找用户帮助手册

    ??进入固件所在文件夹,里面包含很多内容。

    比如说 官方提供的开发板程序,每个型号下面都有对应功能的实现,用户手册就在Drivers文件夹下面。

    STM32 HAL库与标准库的区别1、句柄

    ??句柄(handle),有多种意义,其中第一种是指程序设计,第二种是指Windows编程。现在大部分都是指程序设计/程序开发这类。

    广州底也实业投资有限公司 佛山市浩捷电子仪器有限公司| 加工中心有限公司| 英富曼有限公司| 油泵有限公司| 广州环鑫网络技术有限公司| 邯郸市科硕通风设备安装有限公司| 机床灯具有限公司| 东莞固晶电子科技有限公司| 北京捷登宝康科技有限公司| 钢结构安装/拆除设备北京有限公司| 江西汇丰管业有限公司| http://www.aiellovincenzo.com http://www.jeanhookporcelain.com http://www.kerryjean.com