RoboMaster

标题: 【征集帖】标准库orHAL库? [打印本页]

作者: opteron    时间: 2023-1-30 14:56
标题: 【征集帖】标准库orHAL库?
rm新人一枚,以前学习A板是采用的标准库,如今越来越多战队开始使用C板和HAL库,请问这两者应该如何抉择?或者讨论下优缺点和前景?

作者: 木匠马克一    时间: 2023-1-31 13:41
A板C板各有特点,库直接hal库就完事了
作者: Neozng    时间: 2023-2-7 21:24
https://gitee.com/hnuyuelurm/basic_framework
作者: sky_luvletter    时间: 2023-2-12 16:05
本帖最后由 sky_luvletter 于 2023-2-12 16:06 编辑

本人机械大三,过年期间学习STM32配合野火视频,个人学习下来hal库更好,首先ST公司已经不更新标准库了,对于新手学习来说其实hal和标准你只需要了解他的函数运行逻辑是如何,以及能明白中文开发手册应该就够了。然后在这基础上的可移植性,而且队内开发应该许多都是用cube,cube是用hal库的。我也看了下标准库的视频,其实和hal差不多只是hal都封装好了。个人理解,不喜勿喷。
作者: 帅帅的麦兜    时间: 2023-2-22 09:57
先学标准库,后学HAL库,主要是理解寄存器和功能调度。然后,你会发现:同功能的二者功能函数最终指向内容是很相似的。
便准库最大优势就是资源多,方便学习。HAL是方便和现在的同RM队伍或者部分机构交流学习。
HAL库最大优点是方便移植,不用考虑过多的外设配置和keil配置,安心生产。开发起来,很快,但是缺点也很明显。编译文件过大,对性能较弱主控不是很友好。不过一般的步兵代码,普通的F4也够用了。
作者: djiuser_NadQySR    时间: 2023-2-28 22:39

作者: opteron    时间: 2023-3-3 11:28
帅帅的麦兜 发表于 2023-2-22 09:57
先学标准库,后学HAL库,主要是理解寄存器和功能调度。然后,你会发现:同功能的二者功能函数最终指向内容 ...

大佬我想问一下关于移植,移植是指在不同主控型号的开发板之前迁移代码吗?但是rm里不都是用a板c板,来来去去就2-3个型号,而且现在大量使用c板,a板停产,这个迁移性还依然重要?还是说不同的上层框架之间的迁移?
作者: CYBT    时间: 2023-3-26 22:25
方便最重要
作者: hainiaozcr    时间: 2023-4-5 19:19
楼主辛苦了
作者: clouder    时间: 2023-5-31 20:43


HAL库:优点——支持STM32Cube代码生成,移植性好,可读性好。
缺点——编译出来程序体积大,程序运行效率低。
LL库
优点——支持STM32Cube代码生成,完全兼容HAL库,编译出来体积小,运行效率高。
缺点——移植性稍差,可读性稍差。
标准库
优点——编译出来体积小,运行效率高,网上代码多资料多。
缺点——移植性差,可读性差,不兼容HAL库,且停止更新。


总结
初学者——推荐使用标准库进行学习,因为标准库与底层贴近,且网上资料多,便于学习外设的原理和使用方法。
进阶者——对STM32外设已经有一定了解,推荐以HAL库,在效率和程序体积要求较高的地方LL库


作者: 菜鸡一个##    时间: 2023-7-19 10:52
opteron 发表于 2023-3-3 11:28
大佬我想问一下关于移植,移植是指在不同主控型号的开发板之前迁移代码吗?但是rm里不都是用a板c板,来来 ...

不用a板c板的队伍也很多啊
作者: 王犇    时间: 2023-8-2 08:40
无脑hal库就行了,学习成本相对于标准库低多了。并且个人认为先会用再学底层再去了解一些寄存器啥的,也更好理解,要不然太抽象了。
作者: 林安怡@USTC    时间: 2024-2-12 07:00
我的角度认为,标准库与HAL库的区别在于标准库的单片机配置是自己编写代码,利用标准库的宏定义完成配置,而HAL库是利用了STM32CubeMX进行配置(虽然不是很严谨)。除此之外,HAL库对硬件的配置与中断回调处理进行了更多的封装,从而让用户更专注于程序本身而非硬件。当然HAL库这样的特性也导致了它的效率较低,封装层级高也会导致过多的函数跳转。因此,两者需要相互取舍。初学者适合从标准库入门,开发时使用HAL库。除此之外,STM32CubeMX还支持LL库的生成,该库代码更轻量级,更适合追求高效运算处理的场景
作者: djiuser_LuKb9Se    时间: 2024-3-3 23:27
谢谢谢谢谢谢谢谢谢谢谢谢





欢迎光临 RoboMaster (https://bbs.robomaster.com/) Powered by Discuz! X3.2