概述

STM32 嵌入式开发按照软件分层架构,可分为三类开发框架:裸奔(纯寄存器开发)、带固件库裸机开发、搭载操作系统开发。

前两类均属于无操作系统裸机程序,仅第三类引入操作系统实现多任务并发。

一、裸奔开发(纯寄存器开发)

软件分层

APP应用层
-----------------------
Hardware 硬件寄存器层

定义

无操作系统、无任何驱动中间库,应用代码直接读写芯片硬件寄存器控制外设,行业俗称 “裸奔”。

核心特点

  1. 软件分层极简,无额外封装函数,程序运行效率最高;
  2. 应用层可直接操控每一个寄存器位,硬件时序完全可控。

优点

层级简单、执行速度快、占用 MCU 闪存与内存资源最少。

缺点

  1. 开发门槛高,需要熟练掌握芯片寄存器手册、硬件原理图与外设底层工作原理;
  2. 代码可移植性差,更换芯片型号需大规模重写寄存器操作代码;
  3. 程序天然单任务运行,多业务并发只能手动编写状态机调度,逻辑复杂。

二、带固件库裸机开发框架

软件分层

APP应用层
-----------------------
Lib(Drivers)驱动库层
-----------------------
Hardware 硬件寄存器层

定义

在寄存器硬件层之上封装一层官方驱动库,应用层调用库函数间接操作硬件,全程无操作系统,依旧为单任务裸机程序。

核心特点

底层寄存器操作全部由库函数封装屏蔽,应用开发者无需深究硬件底层细节,可专注业务逻辑编写。

优点

降低硬件开发门槛,代码规范性、可读性优于纯寄存器开发。

缺点

仍为单任务运行,无法原生支持多流程并发。

两类主流固件库区分

  1. 标准库(STD 外设库) 封装轻薄、逻辑贴近硬件,运行效率高;不同 STM32 系列 API 不通用,跨芯片移植难度大;ST 官方已停止维护,新款芯片不再适配。
  2. HAL 库(硬件抽象层) ST 目前主推、长期维护的硬件抽象库,全系列 STM32 芯片共用一套 API,跨型号移植成本极低;深度配套 STM32CubeMX 图形化配置工具,可自动生成时钟、引脚、外设初始化代码,新项目首选。

三、搭载操作系统(OS)的开发框架

软件分层

APP应用层
------------------------
OS操作系统层(提供多任务并发)
------------------------
Lib(Drivers)驱动库层
------------------------
Hardware 硬件寄存器层

定义

在固件库架构基础上新增操作系统层,常用 RTOS 如 FreeRTOS、RT-Thread、UCOS 等。

核心特点

继承固件库屏蔽硬件细节、开发便捷的优势;操作系统提供任务调度、信号量、消息队列、延时等并发机制,解决裸机单任务局限。

优点

  1. 原生支持多任务并发开发,复杂项目逻辑分层清晰;
  2. RTOS 自带内存管理、中断管理、通信组件,大幅简化大型嵌入式项目开发;
  3. 底层硬件依旧由标准库 / HAL 库驱动,兼顾开发效率与硬件兼容性。

缺点

  1. 操作系统会额外占用 Flash、RAM 内存资源;
  2. 需要额外学习 RTOS 任务调度、同步互斥等相关理论知识,学习成本更高。

三类框架核心共性与区别总结

  1. 裸奔、带固件库两类:无操作系统,单任务运行;仅分层差异,前者无驱动库,后者有官方 Lib 封装。
  2. 带 OS 框架:基于固件库搭建,新增操作系统层,支持多任务并发,适用于功能复杂、多外设协同的工业级产品。
  3. 固件库二选一建议:老旧 STM32F1 维护项目使用标准库;新品开发、跨系列产品统一使用 HAL 库搭配 CubeMX。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐