你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 HAL和标准库,各有什么优劣势  

[复制链接]
zero99 提问时间:2018-2-6 14:37 /
相信这两种库大家再熟悉不过了

那么到底它们到底各有什么优劣势呢?

有什么便捷的操作呢?你擅长使用哪种库?

分享下你的使用心得吧~~



附:STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)







收藏 1 评论49 发布时间:2018-2-6 14:37

举报

49个回答
tanic 回答时间:2018-2-28 17:17:24
本帖最后由 tanic 于 2018-3-1 09:13 编辑

HAL库在于对外设的封装,程序员只需要关注应用,缩短项目开发时间。至于效率,只是在初始化阶段比较繁琐而已,运行阶段回调函数多嵌套了几层,这是可以通过策略解决的,比如,串口中断接收,每包数据的接收,先要设置接收buffer和期待接收的data_len,这些都是可以通过定制的协议提前知道的,若把data_len设置为1,可以模拟成标准库的处理方式,然而每次中断都会有额外的消耗,于是系统效率下降。
然而HAL库对程序员自身发展不利,会对CubeMax产生依赖,底层原理认识不足,一旦出现BUG往往不知道如何解决,更有甚者,项目需要换别家的IC那更是惨不忍睹。这样出来的程序员只能成为正真的码农。
正确的选择是两者都要会。或者有空的时候分析HAL底层是如何实现那些中间件的,不过CubeMax封装的中间件对C语言基础要求就比较高了,而且和中间件源代码一般都被修改了一些,最重要的是网络上针对HAL如何实现中间件的资料几乎没有,如果有标准库实现的经历,再用HAL库的才能看的明白。

评分

参与人数 1蝴蝶豆 +5 收起 理由
zero99 + 5

查看全部评分

feiante 回答时间:2018-3-1 10:24:39
       原来主要用的是标准库,也接触了一下HAL库,怎么说呢,本人水平比较差,总是在两种库中徘徊。为什么这么说,首先,原来用惯了标准库,同时标准库退出了那么长时间,网上各种外设的例程基本都全了,查找起来也比较方便。
       HAL库也尝试用了下,对于相对复杂的工作,比如以太网、USB、SD卡、文件系统等,用stm32cube简单配置一下就可以实现功能,确实很快,不需要移植和太多的修改,对于简单的功能,比如I2C,SPI、usart等,就是鼠标点点功能就好,代码自动生成,感觉还是比较爽。
      但是当出现问题需要调试时,HAL库就比较麻烦,封装太深,不像标准库那样容易找到问题点。
      结论就是:不追求新芯片的情况下,还是考虑用标准库。
zxm3165 回答时间:2019-8-16 00:01:57
我是前些年用标准库写过程序,现在又要写32的程序,接触了一下HAL,调试了一段时间,感觉HAL入手快,简单应用快速完成。
但是,写32的一般都有特定的需求,不都是简单应用,尤其对实时性、效率等有要求的应用,感觉HAL很垃圾,我调试一个通信程序,仅一个数据包的接收过程用Receive_IT加回调,不说数据写缓冲区过程与标准库方法没区别,仅仅附加的多次开关中断、各种条件判断等等。。本来不存在的好多东西都加进来了,不仅效率低,而且调试过程中莫名其妙的问题频频出现。
本来单片处理器就是强调效率的,它又不是商用处理器,用来运行庞大操作系统的,搞那么臃肿干嘛。
感觉ST不更新标准库,强推HAL,是一种商业运作模式,对开发者来讲,没什么益处。
个人观点,仅供参考。
Johnson Cao 回答时间:2018-2-27 08:34:23
还是寄存器好

点评

为啥啊,具体说说呐  发表于 2018-2-27 09:00
wudianjun2001 回答时间:2018-2-27 08:42:38
标准库现在官方都不提供支持了吧,都转到HAL来了,对新手来说两个都差不多

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

聪聪 回答时间:2018-2-27 08:46:25
感觉HAL的通用性更强,但是代码比较繁琐,在中断里面会消耗不必要的时间。我还是喜欢用标准库

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

jundao721 回答时间:2018-2-27 08:55:36
以前用标准库,现在似乎都转到HAL上来了,标准库感脚简单易懂,HAL稍复杂点可能稍灵活点,感觉用哪种库都行,解决问题就是好库

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

黑皮男 回答时间:2018-2-27 09:08:15
HAL库把很多需要在应用中实现的功能都封装了起来,相对标准库更加臃肿一些,一些对时间要求很紧迫的处理,感觉还是用标准库或寄存器来完成会更好一些。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

anny 回答时间:2018-2-27 09:24:46
一直在用标准库,HAL库以后有机会慢慢用到项目上来,开始可能有些不习惯吧!

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

疯de_恒 回答时间:2018-2-27 09:27:46
还是喜欢标准库。
标准库优点就是速度快,可读性比较好,比较适合我们电工;缺点也很明显:后面ST都不更新支持标准库了,新器件连标准库都没有,STM32cubeMX也不支持。
HAL库比较绕,比较大,但是与标准库相反,ST现在正支持这个库。
LL库:还待完善中。期待。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

嘉木香 回答时间:2018-2-27 09:43:58
新研、试验:HAL库;
开发、定型:STD库 OR 寄存器;

不过现在ST官方在前两年开始已经不对新出的MCU做STD库了,而且旧型号的系列STD库也不再维护更新;

HAL库是官方未来主推的,也和现在行业风气一样,注重快速实现应用功能并产品化占领市场。
电子产品更新迭代加快,商人也不会去注重产品是否经得起推敲,就算是满身的BUG只要功能够,
占领了市场,赚了钱就行,他们才不管你的稳定性、可靠性呢!

不过在一些特殊行业,像基础工业电子,军工等方向,稳定、可靠才是极致追求的目标,所以
STD库仍然适用,不过个人推荐使用HAL库附带的LL库,更加接近底层。

大家加油!

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

无薪税绵 回答时间:2018-2-27 09:48:48
我个人喜欢标准库。
因为入门时,用习惯了。
在项目上,有很多自己定义的函数都是引用标准库的。
如果要改为HAL库,可能会挺费劲的。

HAL库是使用STM32cubeMX后接触到的。
看大神们的经验分享,感觉HAL总是有些BUG,不太敢用。
但相信后期都会转向HAL库的。

LL库还没有用过,不好评价。

还有就是直接操作寄存器的方式,
这是执行速度上最快的,
但是必须对内核很了解才能用。
要不,就是直接复制大神们的成果

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

风之山谷 回答时间:2018-2-27 09:51:06
还是比较喜欢用标准库,用了很久了,个人使用比较熟悉,HAL库思路不一样,上手还是需要一定时间。
标准库:官方已经不再支持了,优点是速度很快,里面基本都是寄存器操作,思路比较简单,缺点是移植比较难。
HAL库:内容比较抽象,上手不太容易,运行速度比标准库还慢一点,但是可移植性很好,封装程度很高

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

feixiang20 回答时间:2018-2-27 10:04:21
hal库呢属于以后的大势所趋,像是用各种宏包裹起来的语法糖,适合新手快速上手,但是例程小。HAL库对外设操作进行了细致的封装封装,几乎所有外设操作都可以用HAL库中函数实现,让用户不用很了解甚至完全不去学习外设细节就可以编程操作。对于熟悉c语言,但第一次接触stm32甚至单片机的人来说,使用起来非常方便容易。
标准库呢大家都在使用,要看自己的掌握度,速度快,简单易懂,可读性强,资料和例程多。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

Johnson Cao 回答时间:2018-2-27 10:18:24

一般芯片,我都会自己建一个ARCH层,封装我常用并习惯的接口,这位方便移植.其他芯片一般都直接用寄存器.STM32的开始是标准库实现,后期就渐渐的都更新成寄存器.这样可以直接对应手册排错.
大陶 回答时间:2018-2-27 10:38:58
一直用的是标准库,感觉很好用,里面的函数说明也比较丰富,也比较熟悉了,而且函数或者寄存器封装的也很好,移植的话也不是很难。
HAL库从来没有用过。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Angel_YY_ST 回答时间:2018-2-27 10:51:24
提示: 作者被禁止或删除 内容自动屏蔽
1234下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版