搜索
查看: 31629|回复: 25

[讨论] 标准库和HAL库哪个更好用呢?

  [复制链接]

该用户从未签到

1

主题

14

帖子

0

蝴蝶豆

初级会员

最后登录
2017-6-19
发表于 2017-6-4 20:34:16 | 显示全部楼层 |阅读模式
本人使用STM32系列MCU也有好多年了,一直使用标准的固件库进行代码开发,习惯了看芯片手册自己编写驱动(或者从例程中直接复制驱动,然后改成自己适合自己的),一直觉得这样的开发方式和开发节奏挺好,最近逛论坛,才发现,原来已经有新的开发方式出现,那就是HAL库的使用。搜了写HAL库相关的使用,确实感觉要比使用标准库来的方便一些,图形化的界面,所有MCU支持的功能,精确到配置的pin,都很直观的呈现在眼前,选择完要配置的外设,可以直接生成工程,方便了许多,也使新手更容易入门。
借此宝地,请各位论坛上的大神、看官把自己使用这两个库的经验分享下,共同进步。

我先来,抛砖引玉。
由于本人之前一直使用的是标准库,网上也有很多关于标准库的使用例程,想用哪个外设的驱动或者想使用某个外设在产品中实现某些功能,随便一搜有一大堆,感觉开发起来也速度也很快。但是,网上的例程更多的是外设的基本使用,也就是说能用起来就行,很少关注到程序中的一些细节问题,这就需要我们自己去挖掘深层次的东西,毕竟产品代码不是例程或者实验,需要严谨的逻辑和严格的异常保护。在做这些事情的过程中,我们更多的是要去了解芯片手册和其原理。从这个角度来看,标准库的东西更有利于我们去了解芯片的特性和原理。
回复

使用道具 举报

该用户从未签到

27

主题

382

帖子

8

蝴蝶豆

论坛元老

最后登录
2021-4-1
发表于 2017-6-5 10:18:19 | 显示全部楼层
我的看法是,跟着趋势走。目前ST官方主推的是HAL库。
ST目前主推的图形化配置工具CubeMX,生成的代码就是使用HAL库,使用CubeMX开发可以大大减轻开发者的工作量。

如楼主所说,使用标准库有利于开发者了解芯片特性和原理。其缺点也是显而易见的,就是代码要自己组织。比如,外设的配置,是个很繁重的工作。
像楼主这样,已经有好多年的开发经验,对STM32芯片架构和外设原理已经很熟悉了,就没必要继续使用标准库了。
使用CubeMX开发,也有很多官方的例程可以参考(在Cube_fx芯片支持包中)。另外,CubeMX还支持FATFS,LWIP等中间件以及操作系统FREERTOS,省去了自己移植的麻烦。
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

1

主题

14

帖子

0

蝴蝶豆

初级会员

最后登录
2017-6-19
 楼主| 发表于 2017-6-4 20:58:16 | 显示全部楼层
欢迎大家分享自己的经验和想法,
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

971

帖子

176

蝴蝶豆

论坛元老

最后登录
2021-4-1
发表于 2017-6-5 08:44:32 | 显示全部楼层
HAL库好用,标准库写程序,使用哪个库函数要自己组织,但是HAL库好像没这个事情
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

55

帖子

0

蝴蝶豆

中级会员

最后登录
2018-7-20
发表于 2017-6-5 10:28:19 | 显示全部楼层
我想先把标准库学熟练了在学其它库。
回复 支持 反对

使用道具 举报

该用户从未签到

27

主题

382

帖子

8

蝴蝶豆

论坛元老

最后登录
2021-4-1
发表于 2017-6-5 10:37:48 | 显示全部楼层
很多人反对使用HAL库的理由是,使用标准库代码效率更高。
其实,STM32的主频已经如此之高了,大多数应用场合已经可以忽略这点差异。
如果是对速度要求很高的,可以选择F4系列或者F7系列,否则只能回到寄存器操作,或者使用其他ARM内核的芯片了。

值得注意的是,HAL库使用了回调机制,这和标准库的思路有较大区别。这就是初次使用HAL库时会感觉比较难用的原因。比如,像写个串口中断函数或者定时器中断函数,不知道怎么入手。当你了解回调机制之后,就没有问题了。

推荐本人发的几个Cube相关的帖子,希望对大家有帮助
https://www.stmcu.org.cn/module/forum/thread-608185-1-1.html
https://www.stmcu.org.cn/module/forum/thread-607767-1-1.html
https://www.stmcu.org.cn/module/forum/thread-607776-1-1.html
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

14

帖子

0

蝴蝶豆

初级会员

最后登录
2017-6-19
 楼主| 发表于 2017-6-6 00:36:21 | 显示全部楼层
adlu 发表于 2017-6-5 10:18
我的看法是,跟着趋势走。目前ST官方主推的是HAL库。
ST目前主推的图形化配置工具CubeMX,生成的代码就是使 ...

感谢你的回答!
很赞同你说的“跟着趋势走”,嵌入式技术不断的进步,芯片厂商也一直在努力使底层驱动这种比较难以上手的代码开发变得更通俗易懂,使新手跟容易上手,这是必然的趋势,就像C++、C#、JAVA之类的高级语言,只需要调接口,不用理会底层具体怎么实现。
有时间我也仔细研究下使用HAL库进行产品开发,跟随时代的脚步。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

14

帖子

0

蝴蝶豆

初级会员

最后登录
2017-6-19
 楼主| 发表于 2017-6-6 00:36:57 | 显示全部楼层
adlu 发表于 2017-6-5 10:37
很多人反对使用HAL库的理由是,使用标准库代码效率更高。
其实,STM32的主频已经如此之高了,大多数应用场 ...

感谢分享
回复 支持 反对

使用道具 举报

该用户从未签到

54

主题

499

帖子

152

蝴蝶豆

论坛元老

最后登录
2021-3-29
发表于 2017-6-6 13:37:58 | 显示全部楼层
"很多人反对使用HAL库的理由是,使用标准库代码效率更高。"
LL库才是效率最高的吧
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

236

帖子

0

蝴蝶豆

高级会员

最后登录
2021-11-18
发表于 2017-6-6 15:57:36 | 显示全部楼层
等等再用cube或许会好些!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-10 15:08 , Processed in 0.176007 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表