换个角度想想你就明白了:
HAL库问题是冗余、庞大、抽象,但是优点是将底层封装起来,你只要根据需要调用对应的函数即可,应用简单上手快。它的设计思路就是你不用管它底层是怎么实现的,反正只要知道调用这个函数就可以实现对应的功能即可,类似于API接口。坏处当然也有,内部很多状态机制和回调,出什么问题不好查。
LL库就是尽量贴近底层寄存器操作,比标准库更接近直接寄存器操作,差不多就是将一条或几条寄存器操作封装成一个函数或宏,高效简单。
这里你就能看出这两个库走的是两个极端,但是两者又不冲突,一个工程中可以两个库都引用。在需要需要自己完全把控高效的情况下调用LL库,其它不是很在乎效率、需要快速开发时调用HAL库,这个就是现在芯片厂商所想要的效果,并且厂商在提供SDK时都尽量以此思路来做。
从纯新手来说,学习HAL+LL库并不比标准库难,并且HAL+LL反而更好入手一点。
就是原先用惯了标准库工程师,一时改HAL+LL会比较不适应,但是要明白这是目前的趋势,还是要让自己去熟悉了解,逐步过渡过去,否则过几年会发现身边到处都是HAL和LL,找不到新出MCU的标准库了。
|