STM32 全系列软件架构分类(分三大类:裸机运行架构、工程目录分层架构、RTOS 多任务架构)
前面讲的四区一线只是简易裸机执行时序框架,STM32 还有大量工业标准、项目常用架构,下面全部梳理,区分「运行逻辑架构(代码执行流程)」和「工程文件分层架构(文件夹结构)」。
一、裸机运行逻辑架构(无操作系统,main 执行流程)
1. 最简顺序轮询架构(最基础,新手)
无分层、无状态、无时间片,初始化后 while (1) 依次执行任务
c
运行
main{
初始化;
while(1){
按键();LED();串口();采集();
}
}
优点:最简单;缺点:实时性差,一个任务阻塞整体卡死;适合单功能小产品。
2. 四区一线架构(你之前问的,51 移植通用)
四段代码 + 中间隔离延时,时序规范,小家电 / 采集板主流裸机框架
1 区系统初始化 → 一线延时 → 2 区外设初始化 → 3 区主循环轮询 → 4 区中断后台任务
3. 事件驱动标志位架构(标准前后台)
前台(中断):串口、外部中断、定时器只置全局 flag,不处理复杂逻辑
后台(while (1)):循环判断 flag,有事件再执行对应业务
c
运行
void USART_IRQ(){ rx_flag = 1; }
while(1){
if(rx_flag){ 解析数据; rx_flag=0; }
}
优势:中断短小、不阻塞;所有裸机项目都会结合使用。
4. 时间片轮询架构(裸机进阶,替代简易 RTOS)
定时器 1ms 中断做系统节拍,每个任务分配固定执行时间片,分时调度
c
运行
//1ms计数,10ms执行按键,50ms刷新屏幕,100ms上传数据
if(tick%10==0) KeyTask();
if(tick%50==0) DisplayTask();
特点:多任务均分 CPU,不会单任务长期霸占;中等设备首选裸机方案。
5. 有限状态机 FSM 架构(复杂设备专用)
整机拆成多个运行状态:初始化、待机、运行、故障、校准,状态切换驱动业务
c
运行
enum{STA_INIT,STA_IDLE,STA_RUN,STA_ERR} state;
while(1){
switch(state){
case STA_INIT: Init(); state=STA_IDLE; break;
case STA_RUN: 采集+控制; break;
case STA_ERR: 报警停机; break;
}
}
适用:变频器、温控、环保数采仪、吹风机多档位设备,逻辑不会嵌套大量 if。
6. 前后台 + 状态机复合架构(工业裸机顶配)
时间片轮询 + 事件标志 + 整机状态机三合一,复杂无 OS 项目标准写法。
二、工程目录分层架构(文件夹规范,不分裸机 / RTOS)
1. ST 官方 Cube 标准五层分层(HAL 原生架构)
自上而下:
Application 应用层:main、业务任务、状态机
Middleware 中间件层:LwIP、FATFS、emWin、USB、Modbus
HAL 硬件抽象层:STM32 标准外设驱动(GPIO/UART/TIM)
BSP 板级支持包:屏幕、传感器、按键、功放等外部硬件驱动
CMSIS 内核层:内核寄存器、中断向量、系统初始化
优势:跨芯片通用,换 F1/F4/H7 只需替换 HAL 文件夹,上层代码不动。
2. 企业通用四层模块化分层(国内工厂固件标准)
目录划分:App / Service / BSP / Driver
Driver 底层:HAL/LL 寄存器封装,只操作芯片外设
BSP 板级:外部器件(温感、屏、485 模块)
Service 服务层:算法、协议解析、滤波、数据缓存
App 应用层:整机业务、状态机、主任务
核心规则:上层可调用下层,禁止下层调用上层,解耦极强,多人协作开发。
3. 极简三层架构(小项目简化版)
User(业务) + BSP(外设) + Drivers(官方库),去掉独立 Service,适合学生、小型样机。
三、RTOS 实时操作系统多任务架构(复杂设备)
裸机架构解决不了多任务抢占、定时阻塞时,使用 RTOS,主流 FreeRTOS、RT-Thread、UCOS。
1. FreeRTOS 标准多任务架构
每个功能独立任务 Task,分配优先级、独立栈,内核抢占调度:
高优先级:故障保护、高速 AD 采集、闭环控制
中优先级:串口通信、屏幕刷新
低优先级:指示灯、日志上报
配套内核组件:队列 Queue、信号量 Semaphore、互斥锁、软件定时器。
2. RT-Thread 组件化架构(物联网设备)
在多任务基础上增加设备驱动框架、FinSH 命令行、文件系统、网络组件,模块化插件式开发。
3. 双核 MPU 架构(STM32MP1 系列,A7+M4)
Cortex-A7:跑 Linux,UI、网络、APP
Cortex-M4:裸机 / FreeRTOS,实时电机、采集控制
软硬双架构分离,高端工控、网关专用。
四、小众特殊架构
LL 库寄存器直写架构:不使用 HAL,直接操作寄存器,极致执行效率,电机 FOC 高频控制场景;
协程 Coroutine 架构:裸机模拟多任务,无独立栈,资源极小;
MicroPython/Arduino 上层框架:Python / 简易 C 封装,快速原型,底层仍是 HAL 驱动。
五、各架构适用场景速查表
表格
架构类型 适用产品 优缺点
顺序轮询 / 四区一线 小家电、吹风机、简易采集板 简单易调试;多任务实时性弱
时间片轮询 + 状态机 环保数采、温控、检测仪 无 OS、资源占用低、逻辑清晰
四层模块化分层 量产工业控制器、批量项目 易维护、可移植、团队协作友好
FreeRTOS 多任务 带以太网、多路串口、多传感器设备 抢占实时,任务隔离;占用 RAM 更大
RT-Thread 组件化 物联网 4G/WiFi 设备 丰富中间件,自带 shell 调试
STM32MP1 双核 Linux 人机界面、网关、高端工控 兼顾实时控制与复杂操作系统 |