UC头条:STM32基于标准库函数和HAL库编程差异

本文目的是以串口通信来简要分析STM32使用标准库函数和HAL库函数编程的差异。

目录

(一)开发方式

1.配置寄存器

2.库函数

3.HAL库

(二)库函数与HAL库对比

1.串口通信实验

2.库函数与HAL库比较

(三)总结

(一)开发方式

1.配置寄存器

很多人学习51单片机开发的时候,基本都是直接操作寄存器进行单片机的控制,但是当他们转向STM32开发的时候,直接操作寄存器不是那么容易了,因为STM32的寄存器数量是51单片机的许多倍,开发时经常需要翻查芯片的数据手册,此时直接操作寄存器就变得非常的费力了。

但是寄存器是最接近硬件的部分,直接操作寄存器能够很容易的实现自己想要的功能,并且遇到问题时能够知道是哪个寄存器的配置出现了问题,这种开发方式虽然十分麻烦但却让人能够深入理解单片机的运行原理。

2.库函数

由于寄存器开发难度很大,因此ST公司就专门编写了芯片的库函数(固件库),将一些常用量的宏定义和一些外设也通过结构体变量封装起来,如GPIO口时钟等。所以我们只需要配置结构体变量成员就可以修改外设的配置寄存器,从而选择不同的功能。

标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的ST库,几乎全部使用C语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。

3.HAL库

HAL(Hardware Abstraction Layer)是硬件的抽象层,它表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能,这样便于定义一套通用的对用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。下图是HAL库的整体框架。

点击加载图片

HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如F7系列。现在,ST主推HAL库,目前,HAL库已经支持STM32全线产品。总的来说,HAL库相对于库函数层次架构更加清晰,更加抽象。

(二)库函数与HAL库对比

1.串口通信实验

库函数主要代码

点击加载图片

HAL库主要代码

点击加载图片

2.库函数与HAL库比较

库函数配置好串口以后,当串口接收到数据再发送给上位机时需要循环发送,但是HAL库就直接调用HAL_UART_Transmit函数就能直接将串口的数据发给上位机。

库函数的串口通信函数只适用于STM32F1系列,对于其他系列的就不能通用了;但是对于HAL库来说,只要外设相同,基本上能够很容易的移植。

(三)总结

通过比较STM32库函数和HAL库的开发方式,库函数和HAL库其实本质上都是将STM32的底层的寄存器进行封装并向用户提供友好的接口,这都极大的降低了用户的开发门槛。但是相对于库函数来说,HAL库更加“通用”,能够较好的移植到其他的芯片上去,但也正是这样,导致其代码比较庞大、执行效率比较低的结果。总的来说,HAL库相对于库函数更加友好,能够让用户将精力放在开发的产品上而不是怎么实现。

由于作者水平有限,文中难免有疏漏之处,希望读者批评指正。

3.stm32-hal库开发入门

4.STM32 HAL库与标准库的区别

(0)

相关推荐

  • STM32为何能在众多单片机中脱颖而出?

    现在STM32资料教程如此丰富,但还是很多人学不会- 假如STM32像10年前的NXP单片机资料一样少,估计学不会的人会更多. 大家好,我是无际,一个踩坑单片机开发10年的老油条. 这些年,我用过很多 ...

  • 为什么我学51单片机很顺利学STM32却一头雾水(我学的是电气工程后面主修电梯)

    五年懂行,十年称王. 当初自学转行的我,怎么也没想到自己能从事单片机开发10年. 王不敢称,还算懂行. 10年前我刚毕业,即将面临社会毒打,我慌得一批. 我学的是电气工程,后面主修电梯. 毕业后和大家 ...

  • 话题讨论:MSP430编程方式选择

    对于MSP430来说,有一些芯片是有库函数的,大家喜欢继续沿用寄存器开发还是使用新的库开发,还是二者都用? 有何想法见解,欢迎点击阅读原文跟帖回复讨论.对于优秀的见解,我们将选择3名,赠送精美实用礼物 ...

  • GPIO 软件框架

    GPIO 八种工作模式详解 接着上一篇的讲,我们上一篇研究了 GPIO 的硬件结构,其来源于 STM32 官方手册,研究了 GPIO 的八种工作模式和推挽输出及开漏输出原理,接下来我们研究 GPIO ...

  • STM32 ~ USART接收不定长数据

    IDLE中断什么时候发生? IDLE就是串口收到一帧数据后,发生的中断.什么是一帧数据呢?比如说给单片机一次发来1个字节,或者一次发来8个字节,这些一次发来的数据,就称为一帧数据,也可以叫做一包数据. ...

  • 我在高职教STM32(无论怎么封装终究是操作的还是寄存器)06初识STM32固件库

    https://m.toutiao.com/is/J48Arsu/ (无论怎么封装终究是操作的还是寄存器) 大家好,我是老耿,高职青椒一枚,一直从事单片机.嵌入式.物联网等课程的教学.对于高职的学生层 ...

  • STM8S103固件库安装

    注意这个固件的名字,STM8S的专属名字 众所周知,单片机的开发其实就是底层驱动的开发,就是控制寄存器的.随着MCU功能的强大,去配置每一个寄存器来开发的模式不太妙,毕竟不是每一款MCU的寄存器都像是 ...

  • STM32CubeMX STM32F1系列开发时遇到的四个问题及解决方案分享

    (图片为小马哥TJ-STM32F103C8最小系统) 这四个问题是我在使用STM32F103C8T6 + STM32CubeMX做项目时遇到的,给大家分享一下,以下四个问题重要程度依次降低,分别是: ...

  • UC头条:基于好恶的相传与相隐

    点击加载图片 马建红(法学博士) 在日常生活中,人们对一些故事选择相信或者不信,往往并不在于其真假,而是取决于对故事主人公人设的好恶.比如对一个总是以正面形象示人的偶像,附着于其身上的好事善事,即便可 ...

  • UC头条:八字中的四墓库——辰戌丑未

    点击加载图片 四库与钥匙四库是辰戌丑末,库就是库房,库存.有库就是有百宝箱.保险柜.银行卡.有库就要找开库的钥匙,每个库不但有与之相配的钥匙,还有一把锁.有库有钥匙,只要钥匙配对了就有用能打开,库中物 ...

  • STM32教程(五)HAL库之GPIO函数及实例详细介绍!

    今天介绍STM32 HAL库的GPIO函数库,首先打开stm32f4xx_hal_gpio.h文件,我们能看到一些结构体定义以及GPIO引脚的地址定义等等, 这些都很好理解,我们需要重点看HAL库中G ...

  • UC头条:倪海厦: 正统中医学与现代中医学的差异

    中域教育 我简单的说明一些有关中医的历史问题给读者听,这伤寒家与温病派的争执不是现代才有的,有其历史背景的,最早的温病二字就出现在黄帝内经与伤寒论中,--素问--生气通天论--[冬伤于寒,春必病温], ...

  • UC头条:有一种价值连城的古玉 , 叫做 “帝王标准” !

    古玉的经典就在于它的永恒不变,凡我们今天所见的上古之玉,无论其打造的是通灵之玉还是帝王之玉,无疑都是当时古人精神与技艺的结晶. 这是台北国立故宫博物院中几件来自于清宫旧藏的古玉,有着丰富的历史内涵和时 ...

  • UC头条:农村走亲戚的接待标准

    到了过年过节,农村人喜欢走亲戚.一般来说,都讲究礼尚往来,孔子云:"来而不往非礼也."在农村残留着古代的礼节,也颇有君子之风.其实,走亲戚的标准并非一致,但接待标准却大多有些门道. ...

  • UC头条:STM32笔记之特殊地址(识芯)

    写在前面: 本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉. 目录 一.唯一 ID号 二.芯片容量 三. ...

  • UC头条:血糖新标准已公布, 不是3.9

    随着生活水平的不断提高,三高症状也已经是比较常见的疾病了,其中高血糖的发病率也在渐渐地升高,由于在日常生活中各方面的不规律,所以就导致了很多人血糖偏高的现象,也逐渐的开始年轻化,高血糖还被称为是富贵病 ...

  • UC头条:广东发布2021年城乡低保最低标准

    信息时报讯(记者 马泽望 通讯员 莫冠婷 韩浩霖 陈新锐)根据<广东省社会救助条例><广东省人民政府办公厅关于建立全省城乡低保最低标准制度的通知>要求和2021年省政府&quo ...