使用GNU ARM工具链进行STM32开发
关键词:STM32、ARM、GNU、Eclipse、HAL
STM32 HAL库与STD库
因为本教程采用STM32F4XX系列芯片,因此所有比较均基于此款芯片,但与其他STM32系列差别不大,可作为参考。
STD库即标准库,STM32F4xx系列芯片标准库全称STSW-STM32065,提供全覆盖的寄存器地址映射及声明,提供通用API(Application Programming Interface),采用‘Strict ANSI-C’标准编写。使用STD标准库能够在更接近硬件的层次上实现更灵活的程序设计,得到更高的效率。
HAL(Hardware AbstractionLayer),即硬件抽象层,如图1所示。其位于操作系统内核与硬件电路之间,目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。在Linux等操作系统中,经常能够见到HAL层。想必意法半导体推出HAL库的目的,也是为了进一步提高程序的可移植性,降低芯片的使用难度。
图1 硬件抽象层示意图
可以从可移植性、易用性、灵活性、效率这四个方面来衡量两个库之间的差异:
- 可移植性<