最开始在大学我学习stm32 的时候最早是使用寄存器来开发的。
当我把所有寄存器的例程跑了一遍以后,就又使用标准库再把之前的例程再学习了一遍,之后再也没有用过纯寄存器开发的。
为什么?因为没有机会了,这时候我已经毕业了。在公司开始做项目,项目的紧迫性已经不再是以你学习实践为目的,而是更快更高质量的完成项目开发工作,把产品推向市场。
再后来STM32出的型号越来越多,st为了把所有型号的库使用统一的接口并且方便后续维护退出了STM32HAL库和STM32LL库。这两种库都可以基于STM32CUBEMX图形化配置以后直接生成工程。而标准库ST也不会再维护更新
所以很明显最好就是使用ST最新的HAL库或者LL库。有的人可能会说HAL库效率不高,我还是用标准库吧,没错HAL是没有标准库效率高。但是有LL库作为替补更接近底层。
目前我做的项目都是优先基于HAL库来做,如果有些FLASH比较小的比如8k,我为了优化代码空间大小会使用LL库。
1.介绍下什么是HAL固件库
STM32 HAL固件库是Hardware Abstraction Layer的缩写,中文名称是:硬件抽象层。HAL库是ST公司为STM32的MCU最新推出的抽象层嵌入式软件,为更方便的实现跨STM32产品的最大可移植性。HAL库的推出,可以说ST也慢慢的抛弃了原来的标准固件库,这也使得很多老用户不满。但是HAL库推出的同时,也加入了很多第三方的中间件,有RTOS,USB,TCP / IP和图形等等。和标准库对比起来,STM32的HAL库更加的抽象,ST最终的目的是要实现在STM32系列MCU之间无缝移植,甚至在其他MCU也能实现快速移植。
2.HAL固件库介绍
从本质上讲,HAL库和标准库一样都是提供了每个外设的API,我们只需要填写好我们需要配置的参数就可以了。
而且,HAL库在结构上和标准库基本也是类似,接口调用方式等都是一致的,只是改了一些叫法而已,例如之前标准库叫stm32f4xx_xx.c,现在HAL库叫stm32f4xx_hal_xx.c.
3.使用建议:
我们在实际使用过程中,建议使用HAL库,只需要在STM32 Cube Mx软件生成工程代码以后,按照我们之前使用标准库的方式一样来继续写我们的逻辑代码就好。