共计 1139 个字符,预计需要花费 3 分钟才能阅读完成。
【一】零根底上手 HAL 库之—为什么要抉择 HAL 库
- 寄存器:(Snippets)
- ST 规范库:(Standard Peripheral Libraries)
- LL 库:(Low Layer Libraries)
- HAL 库:(Hardware Abstraction Layer Libraries)
1.1 寄存器
操作寄存器,不同于其余三种库的操作形式,实用于同 C51 中的开发模式,间接操作低层的寄存器,自身只对寄存器的地址进行了封装映射关系。因为在 C51 这样的单片机中,只有大量的寄存器须要操作,应用比较简单。但在 stm32 寄存器极多,须要记忆十分难,每次进行开发都须要看开发手册,开发周期增大,所以个别很少人应用,当然谋求效率另说。但不得不说在寄存器操作中的位带操作是真的挺好用的,但须要留神不同的芯片的 IO 的映射关系的区别(能够参考晚点原子的 sys.h 文件)。
实用于谋求高效率的人群,但 LL 库能够齐全代替寄存器,效率并驾齐驱。
1.2 ST 规范库
官网首先推出的一套由低层寄存器对 STM32 芯片封装而来的一个库,包含规范器件外设的器件驱动文件。基本上用 C 语言实现,仅仅应用了大量的汇编。库思维是 面向过程 的,面向过程的了解就是一个函数的执行仅仅实现一件事件。库自身的运作也更靠近于寄存器,仅仅是在寄存器上的一层封装操作。
实用于初学 stm32 的人群,能够让学者通过库理解局部的低层寄存器。
1.3 LL 库
LL 库的一大特点就是 奇妙的使用 C 语言的动态、内联函数来间接操作寄存器,操作硬件低层的库。LL 库是配合 CubeMx 软件开发时,更靠近与硬件的一个库,能够独自应用 LL 库开发,也能够配合 HAL 库进行开发。
实用于谋求效率,同时须要放慢开发周期的人群。
1.4 HAL 库
HAL 库的一大特点就是 面向对象, 置信很多人对面向对象曾经再相熟不过了,操作形象层的库。通过几层的封装,HAL 库将每个外设封装为一个对象,应用 CubeMx 软件配置后,只须要操作对象句柄就能够应用对应的外设,操作非常简单。当然谋求效率能够配合 LL 库进行开发。
实用于不执着与低层代码实现,而在业务逻辑代码上有更高要求的人群,不须要理解太多的硬件,开发简略,但效率有所落后。
1.5 规范库与 Cube LL,Cube HAL, 寄存器的效率比照图
1.6 总结
两个方面,效率和开发周期。须要进行取舍越形象的库开发周期越短,但效率往往越低。但对应当代社会的需要,倒退十分迅速,设施改新换代十分之快,所以往往须要在短周期内进行开发,谋求先机,分得市场红利,这也是官网为什么力推 HAL 库而停更 ST 规范库的起因之一,对于我集体学过了规范库上手 HAL 之后,就一个字“爽”。至于为什么爽,一起来看看吧~ 当他人还在配置低层驱动的时候,你曾经能够开始你的业务逻辑代码的编写了,就是这么爽!!!!