实现目标
1、熟悉STM32开发常用的三种模式
一、STM32开发常用的三种模式
STM32常用的开发模式有三种:基于寄存器开发、基于标准外设库开发、基于STM32CubeMX+HAL/LL开发。通常我们学习STM32的时候,首先都得先选择一种开发模式,不同的开发模式会导致编程的架构完全不一样。
1、 基于寄存器开发模式(STM32 Snippets)
STM32 Snippets是高度优化的示例代码集合,使用符合CMSIS的直接寄存器访问来减少代码开销,从而在各种应用程序中最大化STM32 MCUs的性能。STM32Snippets主要针对底层开发人员,或者从51转过来,直接操作寄存器开发的人员。目前只在 STM32F0 和 STM32L0 系列中有提供。关于STM32F1系列基于寄存器开发资料正点原子公司有提供。
2、基于标准库开发模式(SPL)
标准库全名叫标准外设库(Standard Peripheral Library),其实标准库所做的事情就是对寄存器进行了封装,形成了一套API函数供用户使用。主要是面向过程的嵌入式系统开发人员。通过标准外设库,开发者无需深入掌握底层硬件的细节就可以轻松地驱动外设,快速部署应用。因此,使用标准外设库可以减少开发者驱动片内外设的编程工作量,降低时间成本。由于现在ST官方主推STM32CubeMX,所以停止了对SPL的更新。
3、 基于STM32CubeMX+HAL/LL开发模式
HAL:Hardware Abstraction Layer,硬件抽象层库。是目前ST官方主推的一套开发STM32的库。HAL针对的是具有一定嵌入式基础的开发人员,HAL具有很好的移植性。目前,HAL 库已经支持 STM32 全系列产品,它是ST 公司未来主推的库。
此外,为了配合HAL库的开发应用,ST 公司还发布了一个新的软件开发工具产品:STM32CubeTM。这个产品由 PC 端的图形化配置与代码生成工具 STM32CubeMX、嵌入式软件库函数(HAL 库与LL 库)以及一系列的中间件集合(RTOS、USB 库、文件系统、TCP/IP协议栈和图形库等)构成。STM32CubeMX+HAL/LL开发模式大大减少了开发人员的工作量,提高程序开发的效率。
LL(Low Layer)库是 ST 最近新增的库,与HAL 库捆绑发布,其说明文档也与 HAL文档编写在一起。STM32Cube HAL 和 LL配合STM32CubeMX工具对STM32进行开发。LL库相对HAL库,具有简单的结构,针对之前从事SPL(标准外设库),或寄存器开发的人员。LL 库近似于原来的标准外设库移植到 STM32CubeMX下的新的实现,但是其实现方法更加高效、简洁。
二、三种模式优缺点对比
开发模式名称 | 优点 | 缺点 |
基于寄存器(STM32Snippets) |
|
|
基于 标准外设库(SPL) |
|
|
基于STM32CubeMX+HAL |
|
|
由上表可知基于STM32CubeMX+HAL开发的优点非常明显,再加上近年来,ST公司已不再为其推出的新品微控制器配备对应的标准外设库。而STM32CubeMX +HAL已为ST 公司目前主推的一种开发模式,对此,为了顺应技术发展的潮流,我们选择基于STM32CubeMX+HAL开发模式。