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

标准库和HAL库哪个更好用呢?  

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

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

举报

25个回答
adlu 回答时间:2017-6-5 10:18:19
我的看法是,跟着趋势走。目前ST官方主推的是HAL库。
ST目前主推的图形化配置工具CubeMX,生成的代码就是使用HAL库,使用CubeMX开发可以大大减轻开发者的工作量。

如楼主所说,使用标准库有利于开发者了解芯片特性和原理。其缺点也是显而易见的,就是代码要自己组织。比如,外设的配置,是个很繁重的工作。
像楼主这样,已经有好多年的开发经验,对STM32芯片架构和外设原理已经很熟悉了,就没必要继续使用标准库了。
使用CubeMX开发,也有很多官方的例程可以参考(在Cube_fx芯片支持包中)。另外,CubeMX还支持FATFS,LWIP等中间件以及操作系统FREERTOS,省去了自己移植的麻烦。
adlu 回答时间: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
深谷幽泉 回答时间:2017-6-4 20:58:16
欢迎大家分享自己的经验和想法,
zhao.zhao 回答时间:2017-6-5 08:44:32
HAL库好用,标准库写程序,使用哪个库函数要自己组织,但是HAL库好像没这个事情
该昵称已经不存在 回答时间:2017-6-5 10:28:19
我想先把标准库学熟练了在学其它库。
深谷幽泉 回答时间:2017-6-6 00:36:21
adlu 发表于 2017-6-5 10:18
我的看法是,跟着趋势走。目前ST官方主推的是HAL库。
ST目前主推的图形化配置工具CubeMX,生成的代码就是使 ...

感谢你的回答!
很赞同你说的“跟着趋势走”,嵌入式技术不断的进步,芯片厂商也一直在努力使底层驱动这种比较难以上手的代码开发变得更通俗易懂,使新手跟容易上手,这是必然的趋势,就像C++、C#、JAVA之类的高级语言,只需要调接口,不用理会底层具体怎么实现。
有时间我也仔细研究下使用HAL库进行产品开发,跟随时代的脚步。
深谷幽泉 回答时间:2017-6-6 00:36:57
adlu 发表于 2017-6-5 10:37
很多人反对使用HAL库的理由是,使用标准库代码效率更高。
其实,STM32的主频已经如此之高了,大多数应用场 ...

感谢分享
奏奏奏 回答时间:2017-6-6 13:37:58
"很多人反对使用HAL库的理由是,使用标准库代码效率更高。"
LL库才是效率最高的吧
忘记一切Q 回答时间:2017-6-6 15:57:36
等等再用cube或许会好些!
洛千叶 回答时间:2017-6-7 09:02:14
使用HAL库中间件的移植都很方便
15900218795 回答时间:2019-3-29 16:32:38
HAL库是个趋势,不要被时代给抛弃了,所以还是上HAL库吧
sylar.z 回答时间:2019-3-29 16:41:03
新项目还是使用hal库可以减少工作量,后续升级换代移植也跟方便
edmundlee 回答时间:2019-3-29 17:44:18
建议你用LL库, 因为用库这事是不能长久的, 早晚也得学会用奇存器, 而LL库是效率最高, 最接近寄存器的一种库
Ankky 回答时间:2019-6-12 14:37:07
非常不错的资料,感谢。
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版