【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开发模式。


总结

相关推荐
ACP广源盛1392462567314 分钟前
M6/M5 Pro Mac mini 端侧 AI 爆发@ACP#YLB3118 存储扩展芯片在本地 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
HUI-4741 小时前
EG1198|ESOP‑8 高性价比内置 MOS 降压 DC‑DC,10‑120V 小功率车载仪表优选
嵌入式硬件·硬件工程
智购科技自动贩卖机12 小时前
自动售货机嵌入式状态机设计实战:从45个事件源到层次型状态机的工程重构
大数据·人工智能·stm32·物联网·重构·硬件架构
长江后浪博客12 小时前
ESP32-SOLO-1 在 ESP-IDF v5.5 下启动不断重启问题分析与解决
单片机·嵌入式硬件·嵌入式·esp32·freertos·esp-idf
单片机仿真设计13 小时前
【proteus仿真】基于 STM32 单片机智能仓库设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
星游路13 小时前
单片机·电子时钟
单片机·嵌入式硬件
AOI小白新手上路17 小时前
江科协51单片机 7-2 LCD1602显示时钟实验
单片机·嵌入式硬件·51单片机
思麟呀17 小时前
嵌入式入门(一)宏观生态到首次烧录
c语言·嵌入式硬件
runningshark17 小时前
SC32L14GR8PJR
单片机·嵌入式硬件
智购科技无人售货机厂家17 小时前
2026自动售货机备用电池管理系统设计:从充放电保护到健康监测的工程实践~YH
大数据·linux·单片机·嵌入式硬件·微信