【STM32+HAL+Proteus】系列学习教程2---STM32开发模式选择

实现目标

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) | 1. 代码简练、执行效率高; 2. 有助于了解STM32 微控制器的架构与工作原理。 | 1. 代码后期维护难,移植性差; 2. 开发者需要有一定的底层编程基础。 |
| 基于 标准外设库(SPL) | 1. 对开发者的要求较低,会调用 API 即可编写程序; 2. 代码容错性好且后期维护简单; 3. 适合快速入门。 | 1. 运行速度相对寄存器级的代码偏慢; 2. 比较不利于开发者深入掌握 STM32 微控制器的架构与工作原理。 |
| 基于STM32CubeMX+HAL | 1. 初始代码框架自动生成,这简化了开发者新建工程、编写初始代码的过程; 2. 图形化配置与代码生成工具操作简单、界面直观,这为开发者节省了查询数据手册了解引脚与外设功能的时间; 3. 采用的是HAL库,代码移植性最好。 | 1. 函数调用关系比较复杂、程序可读性较差、执行效率偏低; 2. 需要对STM32微控制器的基础知识和外设工作原理有一定的了解。 |

由上表可知基于STM32CubeMX+HAL开发的优点非常明显,再加上近年来,ST公司已不再为其推出的新品微控制器配备对应的标准外设库。而STM32CubeMX +HAL已为ST 公司目前主推的一种开发模式,对此,为了顺应技术发展的潮流,我们选择基于STM32CubeMX+HAL开发模式。


总结

相关推荐
EVERSPIN10 小时前
分享国产32位单片机的电机控制方案
单片机·嵌入式硬件
每天一杯冰美式oh10 小时前
51单片机的家用煤气报警系统【proteus仿真+程序+报告+原理图+演示视频】
嵌入式硬件·51单片机·proteus
芯橦13 小时前
【瑞昱RTL8763E】音频
单片机·嵌入式硬件·mcu·物联网·音视频·visual studio code·智能手表
夜间去看海17 小时前
基于单片机的智能浇花系统
单片机·嵌入式硬件·智能浇花
VirtuousLiu17 小时前
LM74912-Q1用作电源开关
单片机·嵌入式硬件·ti·电源设计·lm74912·电源开关
打地基的小白17 小时前
软件I2C-基于江科大源码进行的原理解析和改造升级
stm32·单片机·嵌入式硬件·通信模式·i2c
Echo_cy_18 小时前
STM32 DMA+AD多通道
stm32·单片机·嵌入式硬件
朴人18 小时前
【从零开始实现stm32无刷电机FOC】【实践】【7.2/7 完整代码编写】
stm32·单片机·嵌入式硬件·foc
追梦少年时18 小时前
STM32中断——外部中断
stm32·单片机·嵌入式硬件
bai_lan_ya18 小时前
stm32定时器中断和外部中断
stm32·单片机·嵌入式硬件