21ic电子技术开发论坛

标题: 标准外设库和HAL库的区别是什么? [打印本页]

作者: YanniChen    时间: 2018-5-18 14:18
标题: 标准外设库和HAL库的区别是什么?
之前一直在用标准外设库,最近才听到有HAL库,还搭配cubeMx工具,他们的区别是什么?整两个库是替换关系?

评论

作者: 通宵敲代码 时间:2018-10-22 10:15
目前官方主推的是LL库,比HAL库更节省内存,执行效率也高不少。 
作者: 通宵敲代码 时间:2018-10-22 10:15
目前官方主推的是LL库,比HAL库更节省内存,执行效率也高不少。 

作者: 734774645    时间: 2018-5-18 15:34
HAL库起了个新名字:硬件抽象层。更加标准化了。所有的函数名和函数体进行了重新定义,重新编写。更加通用。基本上如果是共有的特征的单片机,你用HAL库的话,函数名是一样的,方便移植。

作者: Harvard    时间: 2018-5-18 15:44
更加科学 更加庞大 又介于两者之间的 .HAL_LL库

作者: yiyigirl2014    时间: 2018-5-18 16:42
官网介绍说,hal(hardware abstract layer)是一层硬件的抽象,看到这里,我非常激动,看来st终于意识到原来标准库的问题了,原来的标准库非常依赖于具体硬件细节,很难体现出使用库的优势,而且很难移植。同时我也非常好奇,st到底是如何把不同系列mcu的操作给封装起来的,是不是足够抽象,方便移植。

评论

作者: icecut 时间:2018-10-14 12:08
搞了个软件,自动配置和生成代码...库是活的代码了 

作者: quickman    时间: 2018-5-18 16:50
外设库只是固件库的一部分

作者: jstgotodo    时间: 2018-5-18 16:50
有了cube,以且就慢慢的没有标准库了

作者: iamaiqiyi    时间: 2018-5-18 16:50
到目前为止,有标准外设库(STD库)、HAL库、LL库 三种。

作者: dzfansman    时间: 2018-5-18 16:51
STD库和HAL库两者相互独立,互不兼容。

作者: sanxingnote7    时间: 2018-5-18 16:51
标准外设库仍然接近于寄存器操作

作者: backlugin    时间: 2018-5-18 16:51
ST为各系列提供的标准外设库稍微有些区别。

作者: sdCAD    时间: 2018-5-18 16:52
LL库和HAL库两者相互独立,只不过LL库更底层。

作者: fengm    时间: 2018-5-18 16:52
HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。

作者: jkl21    时间: 2018-5-18 16:53
HAL库(STM32Cube)有点类似面向对象的库,里面封装了很多东西

作者: maqianqu    时间: 2018-5-18 16:53
HAL库(STM32Cube)对于想理解深入 不适合用这个库。

作者: dzfansman    时间: 2018-5-18 16:54
标准外设库(Standard Peripherals Library)是对STM32芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的ST库。几乎全部使用C语言实现。

作者: quickman    时间: 2018-5-18 16:54
外设库、CMSIS、DSP库、三方驱动等组合起来就成固件库。

作者: jstgotodo    时间: 2018-5-18 16:54
所以不管怎么样,尽量用cube

作者: iamaiqiyi    时间: 2018-5-18 16:54
前两者都是常用的库,后面的LL库是ST最近才添加,随HAL源码包一起提供

作者: sdCAD    时间: 2018-5-18 16:54
部分HAL库会调用LL库(例如:USB驱动)。同样,LL库也会调用HAL库

作者: backlugin    时间: 2018-5-18 16:54
STM32的标准外设库涵盖以下3个抽象级别:

包含位,位域和寄存器在内的完整的寄存器地址映射
涵盖所有外围功能(具有公共API的驱动器)的例程和数据结构的集合。
一组包含所有可用外设的示例,其中包含最常用的开发工具的模板项目。

作者: dzfansman    时间: 2018-5-18 16:54
是独立的。

作者: dzfansman    时间: 2018-5-18 16:54
标准外设库和HAL库根本不一样。

作者: fengm    时间: 2018-5-18 16:55
STM32Cube HAL库表现出更高的抽象整合水平,HAL API集中关注各外设的公共函数功能

作者: sanxingnote7    时间: 2018-5-18 16:55
要就是将一些基本的寄存器操作封装成了C函数。

作者: jkl21    时间: 2018-5-18 16:55
标准外设库是开发STM32比较经典的库,直接反应底层(寄存器)的代码,适合初学者

作者: maqianqu    时间: 2018-5-18 16:55
标准外设库是适合初学者,或需要深入理解的人。

作者: mintspring    时间: 2018-5-19 07:48
你找某个外设的两个库对比看看,比如GPIO的两个库。HAL更繁杂,但是更通用。

作者: Thorald    时间: 2018-5-19 16:54
表示不调会用cube
哪位老师发个教程什么的

作者: 877049204    时间: 2018-5-19 17:18
标准外设库是之前STM32官方推出的,现在都不更新了。HAL库可以用cubeMx生成,好多厂家多用这个库了,机智云就是这样。
我个人认为很这样很狗血,两个库不兼容,比如说GPIO,之前的标准外设库GPIO都要大写,而HAL库只是变成了Gpio,不明白为什么不与之前的库兼容

作者: mintspring    时间: 2018-5-19 17:23
HAL 是个方向,为了更好的兼容。和可移植能力。

作者: chinashenzhen    时间: 2018-5-20 17:10
看你习惯了哪种方法。不要纠缠在什么差别。习惯了一中,就不要花太多的时间去了解另外的一种。

作者: runningwzf    时间: 2018-5-20 21:53
STD库好用一些
HAL库依赖他那个软件

作者: 潜力变实力    时间: 2018-5-20 22:40
hal库还是不错的

作者: wt.liu    时间: 2018-5-21 10:50
哪种库是开源的?

作者: 地瓜patch    时间: 2018-5-23 09:46
标准库官方已经不更新了,hal库是趋势

作者: 1949zbh    时间: 2018-10-12 14:31
一直用标准库的飘过!看样得跟上时代了

作者: xiaoqizi    时间: 2018-10-12 14:40
没探讨过 我 一直用的是hal库

作者: 木木guainv    时间: 2018-10-12 14:43
就是使用者的习惯问题

作者: dongnanxibei    时间: 2018-10-12 22:04
就是出新品了。

作者: wanduzi    时间: 2018-10-13 18:45
这么多库要学啊。

作者: sumdada    时间: 2018-10-14 22:04
坐看解决方案

作者: nuaabob    时间: 2018-10-15 10:11
区别就在于,我自学原来的标准外设库,愣是没学会针对任意的STM32芯片搭出一个工程框架来,而自学HAL库,一本书都没看,就看了官方的英文API手册,就独立完成了一个项目。HAL库更傻瓜。

评论

作者: whtwhtw 时间:2018-10-15 15:39
是的,HAL库入门门槛低,项目开发快,这是大优势,相对于消耗多一点flash和降低一点效率是值得的。具体也看项目 

作者: jazzyfox    时间: 2018-10-15 10:16
其实简单好用才是关键,做东西辅助越强,速度越快

作者: caijie001    时间: 2018-10-16 14:04
用cubeMX就好了,管他那么多呢反正我还在标准库

作者: 憨厚诚实大叔    时间: 2018-10-16 15:00
都是工具,我现在用cubeMX初始化。应用层直接操作寄存器,封装的太吓人,有些时候对速率有要求,中断应用层不敢用HAL库,又懒得移植标准库,就直接寄存器了

作者: nuaabob    时间: 2018-10-16 19:25
wanduzi 发表于 2018-10-13 18:45
这么多库要学啊。

标准外设库都停止更新了,就是已经被st淘汰了,还学它作甚。

作者: nuaabob    时间: 2018-10-20 17:32
jkl21 发表于 2018-5-18 16:53
HAL库(STM32Cube)有点类似面向对象的库,里面封装了很多东西

C语言的库,不是C++的库,OOP不了。

作者: it_yrj    时间: 2018-10-29 13:36
有没有必要从以前的标库切换到cube呢

作者: stm32jy    时间: 2018-10-29 18:51
我还是觉得标准库比较好,更容易学习

作者: stm32jy    时间: 2018-10-29 18:51
HAL库占用内存更大吧

作者: stm32jy    时间: 2018-10-29 18:52
开发 M7 内核的就必须得用hal库了

作者: 等你下课    时间: 2018-10-30 11:48
硬件的抽象,看到这里,我非常激动,看来st终于意识到原来标准库的问题了,原来的标准库非常依赖于具体硬件细节,很难体现出使用库的优势,而且很难移植。同时我也非常好奇,st到底是如何把不同系列mcu的操作给封装起来的,是不是足够抽象,方便移植。

作者: 抹茶妹妹    时间: 2018-10-30 12:26
STD库和HAL库两者相互独立,互不兼容。

作者: tianqi911    时间: 2019-6-13 12:00
nuaabob 发表于 2018-10-16 19:25
标准外设库都停止更新了,就是已经被st淘汰了,还学它作甚。

不是淘汰,只是不支持,因为F7的速度太快,不需要了。

作者: nuaabob    时间: 2019-6-16 10:28
HAL库不错的,LL库也不错,CubeMX还是蛮容易上手的。

作者: 丿纸飞机巛    时间: 2019-6-16 11:55
HAL库目前最流行

作者: firegod01cn    时间: 2019-8-30 12:03
nuaabob 发表于 2018-10-15 10:11
区别就在于,我自学原来的标准外设库,愣是没学会针对任意的STM32芯片搭出一个工程框架来,而自学HAL库,一 ...

没学会是没下功夫,跟哪个库没啥关系吧~~~~~~~~~~标准库运行更快  当然是标准库用起来范围更广一点,特别语音处理 快一点 慢一点差别还是很大的

作者: functions    时间: 2019-8-30 15:15
库用的不多,学习下

作者: nuaabob    时间: 2019-9-11 09:10
firegod01cn 发表于 2019-8-30 12:03
没学会是没下功夫,跟哪个库没啥关系吧~~~~~~~~~~标准库运行更快  当然是标准库用起来范围更广一点,特别 ...

标准库已经停止更新了,以后新出的芯片都没有标准库了,当然是HAL库更有生命力了。

作者: nuaabob    时间: 2020-9-11 20:48
firegod01cn 发表于 2019-8-30 12:03
没学会是没下功夫,跟哪个库没啥关系吧~~~~~~~~~~标准库运行更快  当然是标准库用起来范围更广一点,特别 ...

同样没下功夫,但HAL一看就明白。





欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/)