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


总结

相关推荐
wuyk55515 小时前
Keil工具链-第05讲-启动文件与__main到底做了什么
c语言·stm32·单片机·嵌入式硬件·物联网
shijuejianceliu21 小时前
传统规则视觉与嵌入式AI智能相机的技术差异
人工智能·嵌入式硬件·视觉检测·相机
Zw-awa1 天前
OLED为什么能显示字:软件I2C换成硬件I2C
stm32
不脱发的程序猿1 天前
GD32串口数据收进内存之后DMA如何处理?
单片机·嵌入式硬件·dma·嵌入式·串口通信·gd32
FPGA小迷弟1 天前
FPGA 与千兆以太网校验和:从原理到 Verilog 实现
嵌入式硬件·fpga开发·无人机·ai编程·fpga
Zw-awa2 天前
协议是人为约定:同一个字节能有三种意思
stm32
国科安芯2 天前
83 倍:ASC0108S 在推挽和开漏之间,差的不是速度,是回程
单片机·嵌入式硬件·架构·电平转换·抗辐射
国科安芯2 天前
从遥控到自治:ASP4644S2B支撑星载电源健康管理与容错配电
网络·单片机·嵌入式硬件·安全·dcdc·低轨卫星·商业航天
rhythm-ring2 天前
《汽车热管理系统:电子水泵单线PWM双向诊断机制》
单片机·嵌入式硬件·汽车
Dev_XH2 天前
【成品设计】基于物联网的车间安全生产监控系统设计
stm32·单片机·嵌入式硬件·物联网