STM32开发-LL库与HAL库对比
在使用STM32CubeMX或者STM32CubeIDE开发应用程序时,用户可以根据自己的喜好选择使用HAL高级库或者LL底层库驱动,但是在用法上,两者有很大的不同。
LL底层库
LL驱动函数,实际上就是以内联函数的方式访问寄存器,在优化等级高的时候,编译器会直接嵌入宏代码,因此与我们自己直接对寄存器读写的效率是一样的。
也正因为如此,LL库只给我们实现了功能非常简单功能,基本上只有一些初始化的代码,其它的功能需要用户自己去实现,这一方面增加了开发难度,但是,给我们开发程序增加了灵活性,我在专栏《STM32精讲》中,就是以LL库为基础,给大家介绍单片机的驱动及应用开发,目前已经完成了通用串口驱动及协议的课程(包括工程源代码)。
其特点就是高效,与自己直接写代码访问寄存器相比,在不降低效率的情况下,其代码更加统一规范,具有可移植性,而且更加节省内存空间。
HAL高级库
相比LL库,HAL库就为用户实现了非常完善的功能,从初始化到具体的收、发和读、写等功能都全部提供了。所以从使用上看是更简单了,但是效率降低了,代码空间也大了很多。当然,这对一般的使用而言,影响不是太大,如果有微秒级别的控制需求的话,建议还是用LL库比较好。在《STM32 HAL库使用》中,对HAL库函数的使用作了详细的说明,从工作原理到参数配置,有一定基本的朋友可以参考。
HAL初始化结构比较大,而且初始化完成之后还不释放,有点浪费内存。
总结
建议大家一定要采用库函数开发自己的程序,不要再采用直接对寄存器赋值一个数字的方式来实现对寄存器的访问了,时间一长,自己都忘了,很难维护,更难移植。
关键词: STM32

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码