STM32 三种开发框架
·
概述
STM32 嵌入式开发按照软件分层架构,可分为三类开发框架:裸奔(纯寄存器开发)、带固件库裸机开发、搭载操作系统开发。
前两类均属于无操作系统裸机程序,仅第三类引入操作系统实现多任务并发。
一、裸奔开发(纯寄存器开发)
软件分层
APP应用层
-----------------------
Hardware 硬件寄存器层
定义
无操作系统、无任何驱动中间库,应用代码直接读写芯片硬件寄存器控制外设,行业俗称 “裸奔”。
核心特点
- 软件分层极简,无额外封装函数,程序运行效率最高;
- 应用层可直接操控每一个寄存器位,硬件时序完全可控。
优点
层级简单、执行速度快、占用 MCU 闪存与内存资源最少。
缺点
- 开发门槛高,需要熟练掌握芯片寄存器手册、硬件原理图与外设底层工作原理;
- 代码可移植性差,更换芯片型号需大规模重写寄存器操作代码;
- 程序天然单任务运行,多业务并发只能手动编写状态机调度,逻辑复杂。
二、带固件库裸机开发框架
软件分层
APP应用层
-----------------------
Lib(Drivers)驱动库层
-----------------------
Hardware 硬件寄存器层
定义
在寄存器硬件层之上封装一层官方驱动库,应用层调用库函数间接操作硬件,全程无操作系统,依旧为单任务裸机程序。
核心特点
底层寄存器操作全部由库函数封装屏蔽,应用开发者无需深究硬件底层细节,可专注业务逻辑编写。
优点
降低硬件开发门槛,代码规范性、可读性优于纯寄存器开发。
缺点
仍为单任务运行,无法原生支持多流程并发。
两类主流固件库区分
- 标准库(STD 外设库) 封装轻薄、逻辑贴近硬件,运行效率高;不同 STM32 系列 API 不通用,跨芯片移植难度大;ST 官方已停止维护,新款芯片不再适配。
- HAL 库(硬件抽象层) ST 目前主推、长期维护的硬件抽象库,全系列 STM32 芯片共用一套 API,跨型号移植成本极低;深度配套 STM32CubeMX 图形化配置工具,可自动生成时钟、引脚、外设初始化代码,新项目首选。
三、搭载操作系统(OS)的开发框架
软件分层
APP应用层
------------------------
OS操作系统层(提供多任务并发)
------------------------
Lib(Drivers)驱动库层
------------------------
Hardware 硬件寄存器层
定义
在固件库架构基础上新增操作系统层,常用 RTOS 如 FreeRTOS、RT-Thread、UCOS 等。
核心特点
继承固件库屏蔽硬件细节、开发便捷的优势;操作系统提供任务调度、信号量、消息队列、延时等并发机制,解决裸机单任务局限。
优点
- 原生支持多任务并发开发,复杂项目逻辑分层清晰;
- RTOS 自带内存管理、中断管理、通信组件,大幅简化大型嵌入式项目开发;
- 底层硬件依旧由标准库 / HAL 库驱动,兼顾开发效率与硬件兼容性。
缺点
- 操作系统会额外占用 Flash、RAM 内存资源;
- 需要额外学习 RTOS 任务调度、同步互斥等相关理论知识,学习成本更高。
三类框架核心共性与区别总结
- 裸奔、带固件库两类:无操作系统,单任务运行;仅分层差异,前者无驱动库,后者有官方 Lib 封装。
- 带 OS 框架:基于固件库搭建,新增操作系统层,支持多任务并发,适用于功能复杂、多外设协同的工业级产品。
- 固件库二选一建议:老旧 STM32F1 维护项目使用标准库;新品开发、跨系列产品统一使用 HAL 库搭配 CubeMX。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)