嵌入式常用程序架构
常用五种架构并非互斥更像是一套“组合拳”分别应对嵌入式开发中不同层面的挑战。下面我将为你逐一介绍它们的核心思想、典型代码体现、适用场景及优缺点。1. 前后台 状态机架构这是裸机开发无操作系统的终极形态也是嵌入式开发最基础、最经典的架构。它主要解决的是“如何在资源极度受限的单片机上高效地处理复杂逻辑”的问题。核心思想将程序分为“前台”和“后台”。1前台由中断服务程序ISR 构成负责快速响应紧急外部事件只做标记等轻量级工作。2后台是main()函数中的无限循环while(1)负责轮询处理各种非紧急任务。3状态机用于解决后台主循环中任务执行时间过长导致系统卡顿的问题。它将一个长任务拆分成多个步骤每次循环只执行一个步骤通过状态变量记录进度。代码体现// 1. 后台主循环 (超级循环)intmain(void){Hardware_Init();while(1){// 轮询处理各个任务每个任务都是一个状态机Task_KeyScan();Task_LedDisplay();Task_Communication();}}// 2. 前台中断服务程序 (ISR)voidEXTI0_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line0)!RESET){g_key_pressed1;// 仅设置标志不做复杂处理EXTI_ClearITPendingBit(EXTI_Line0);}}// 3. 状态机任务示例 (按键扫描)voidTask_KeyScan(void){staticenum{IDLE,PRESSED,RELEASED}stateIDLE;switch(state){caseIDLE:if(g_key_pressed){statePRESSED;/* 执行按下动作 */}break;casePRESSED:// ... 检测释放等break;// ...}}适用场景资源极度受限的MCU如51单片机RAM10KB、逻辑简单的小家电控制、传感器数据采集等简单项目。优点实现简单资源占用极低开发周期短。缺点实时性较差主循环阻塞会导致系统卡顿项目复杂度上升后维护和扩展会变得非常困难。2. 分层架构这是一种代码的组织方式主要解决“如何让代码更清晰、更容易移植和维护”的问题。核心思想将软件按功能划分为不同层次上层依赖下层下层对上层一无所知形成单向依赖。这样更换硬件时只需修改底层上层业务逻辑无需改动。典型分层1应用层App纯业务逻辑如温度报警逻辑。2中间件层Middleware通用服务如TCP/IP协议栈、文件系统。3操作系统层OSRTOS内核负责任务调度。4驱动层/板级支持包BSP封装外设操作如LCD、传感器驱动。5硬件抽象层HAL最底层直接操作寄存器屏蔽硬件差异。代码体现// 应用层 (app.c) #includebsp_led.h// 只依赖BSP层接口voidApp_LedBlink(void){BSP_Led_On();// 调用BSP层函数不关心底层是GPIO还是其他delay(100);BSP_Led_Off();}// BSP/驱动层 (bsp_led.c) #includehal_gpio.h// 依赖HAL层接口voidBSP_Led_On(void){HAL_GPIO_WritePin(LED_PIN,GPIO_PIN_RESET);// 调用HAL层函数}// HAL层 (hal_gpio.c) voidHAL_GPIO_WritePin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,uint8_tPinState){// 直接操作寄存器if(PinState!GPIO_PIN_RESET)GPIOx-BSRRGPIO_Pin;elseGPIOx-BRRGPIO_Pin;}适用场景几乎所有中大型项目尤其是需要考虑未来平台移植、多人协作开发的项目。优点高内聚、低耦合代码可读性、可维护性和可移植性极高。缺点增加代码量和函数调用层次可能带来轻微的性能开销对开发者架构设计能力要求较高。3. RTOS 分层架构这可以看作是“分层架构”在“RTOS多任务”场景下的具体应用解决了“如何管理复杂系统中多个并行任务”的问题。核心思想在分层架构的基础上引入RTOS实时操作系统 作为“操作系统层”。应用程序被拆分成多个独立的任务Task由RTOS内核根据优先级进行调度。任务间通过队列、信号量等机制通信。代码体现// 应用层 (app.c) voidTask_ReadSensor(void*pvParameters){while(1){intdataBSP_Sensor_Read();// 调用BSP层xQueueSend(g_xQueue,data,portMAX_DELAY);// 发送数据到队列vTaskDelay(pdMS_TO_TICKS(100));// 延时100ms}}voidTask_ProcessData(void*pvParameters){intdata;while(1){if(xQueueReceive(g_xQueue,data,portMAX_DELAY)pdTRUE){// 处理数据...}}}intmain(void){Hardware_Init();// 创建任务xTaskCreate(Task_ReadSensor,Sensor,128,NULL,1,NULL);xTaskCreate(Task_ProcessData,Process,256,NULL,2,NULL);vTaskStartScheduler();// 启动RTOS调度器while(1);}适用场景中大型复杂项目如带GUI的工业设备、多传感器融合的物联网网关、需要网络通信的智能产品等。优点实时性强能有效管理复杂任务提高CPU利用率模块化程度高。缺点对MCU资源ROM/RAM有要求系统复杂度高引入RTOS本身会带来学习成本和潜在的Bug风险。4. 事件驱动 休眠唤醒架构这是一种专注于极致低功耗的架构解决了“电池供电设备如何尽可能省电”的核心问题。核心思想系统平时处于深度休眠状态几乎不耗电。所有操作都由外部事件如按键中断、传感器触发、定时器超时唤醒后执行执行完毕再次进入休眠。代码体现intmain(void){Hardware_Init();while(1){// 1. 处理所有待办事件ProcessAllEvents();// 2. 检查是否还有事件需要处理if(IsEventQueueEmpty()){// 3. 如果没有事件进入休眠模式等待中断唤醒__WFI();// 执行WFI指令CPU停止// 4. 被中断唤醒后继续循环处理事件}}}// 外部中断服务程序voidEXTI0_IRQHandler(void){// 1. 将唤醒事件放入队列PostEvent(EVENT_BUTTON_PRESSED);// 2. 中断结束后CPU会回到主循环退出休眠状态}适用场景对功耗有极致要求的电池供电设备如智能手表、BLE信标、无线传感器节点等。优点功耗极低能最大化电池寿命。缺点系统响应有延迟需等待唤醒编程模型复杂需精细管理休眠与唤醒状态。5. OOP 与设计模式这不是一种具体的系统架构而是一套 “代码实现的指导思想”和“解决特定问题的成熟方案” 用于提升代码质量。OOP面向对象编程思想在C语言中通过struct和函数指针模拟封装、继承和多态让代码更模块化。// 用结构体模拟“类”typedefstruct{int(*open)(void);// 函数指针作为方法int(*close)(void);}Device_Ops;Device_Ops lcd_ops{Lcd_Open,Lcd_Close};Device_Ops uart_ops{Uart_Open,Uart_Close};voidDevice_Control(Device_Ops*ops){ops-open();// 多态同一个函数调用不同设备执行不同操作}设计模式是前人总结的、针对特定问题的成熟解决方案。嵌入式中最常用的模式包括单例模式Singleton确保一个类只有一个实例常用于管理唯一的硬件资源如日志系统。观察者模式Observer当一个对象状态改变时自动通知所有依赖它的对象常用于事件分发。状态模式State将状态机的每个状态封装成一个类是复杂状态机的更优雅实现。适用场景代码规模较大如超过10万行、需要长期维护和扩展的复杂项目。优点极大地提升代码的可复用性、可扩展性和可维护性。缺点需要额外的设计可能增加代码复杂度和轻微的性能开销。总结这五种架构思想在实际工程中通常是组合使用的。例如一个典型的复杂嵌入式项目可能同时具备以下特征1采用 RTOS 分层架构 (3) 作为主体框架。2在某个复杂的通信协议解析任务中运用 状态机 (1) 的思想。3在驱动层使用 OOP思想 (5) 封装不同厂家的传感器实现“多态”。4在低功耗管理模块采用 事件驱动与休眠唤醒 (4) 的策略。

相关新闻

ncmppGui:3分钟掌握网易云音乐NCM格式解密转换技巧

ncmppGui:3分钟掌握网易云音乐NCM格式解密转换技巧

ncmppGui:3分钟掌握网易云音乐NCM格式解密转换技巧 【免费下载链接】ncmppGui 一个使用C编写的极速ncm转换GUI工具 项目地址: https://gitcode.com/gh_mirrors/nc/ncmppGui ncmppGui是一款专为网易云音乐NCM加密格式设计的极速转换工具,采用C编写…

2026/7/31 17:22:48 阅读更多 →
【路由协议LEACH和EAMMH】无线传感器网络中的聚类:使用MATLAB对EAMMH和LEACH协议的性能比较研究附Matlab代码

【路由协议LEACH和EAMMH】无线传感器网络中的聚类:使用MATLAB对EAMMH和LEACH协议的性能比较研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎完整代码获取 定制创新 论文复现私信🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、…

2026/7/31 17:22:48 阅读更多 →
APK Installer:在Windows上直接安装Android应用的完整指南

APK Installer:在Windows上直接安装Android应用的完整指南

APK Installer:在Windows上直接安装Android应用的完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想在Windows电脑上运行Android应用&…

2026/7/31 17:22:48 阅读更多 →

最新新闻

AI Job Search:终极指南,让AI成为你的全栈求职助手

AI Job Search:终极指南,让AI成为你的全栈求职助手

AI Job Search:终极指南,让AI成为你的全栈求职助手 【免费下载链接】ai-job-search The job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interv…

2026/7/31 18:05:07 阅读更多 →
基于ScreenCaptureKit的macOS高性能屏幕录制解决方案:QuickRecorder技术深度解析

基于ScreenCaptureKit的macOS高性能屏幕录制解决方案:QuickRecorder技术深度解析

基于ScreenCaptureKit的macOS高性能屏幕录制解决方案:QuickRecorder技术深度解析 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https…

2026/7/31 18:05:07 阅读更多 →
计算机毕业设计之基于SpringBoot+Vue的家教服务系统的设计与实现

计算机毕业设计之基于SpringBoot+Vue的家教服务系统的设计与实现

随着新经济的需求和新技术的发展,特别是网络技术的发展,它已经深入到各个行业中。信息技术已经从传统的数据处理转变为网络信息的处理和交互。在管理方面,通过信息管理技术,系统可以快速的处理大量的数据,并且能够将不…

2026/7/31 18:05:07 阅读更多 →
【单片机毕业设计推荐】基于 STM32 或 51 单片机的智能输液监测控制系统设计与实现 基于 STM32 或 51 单片机的多参数医用输液智能调控装置设计(024004)

【单片机毕业设计推荐】基于 STM32 或 51 单片机的智能输液监测控制系统设计与实现 基于 STM32 或 51 单片机的多参数医用输液智能调控装置设计(024004)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能核心功能 1:输液滴速采集与电机自适应调速功能核心功能 2:药液液位监测与低液位提醒功能核心功能 3:心率血氧参数采集与异常报警功能核心功能 4:温度采集与恒温…

2026/7/31 18:05:07 阅读更多 →
【单片机毕业设计推荐】基于 STM32/51 单片机的智能定时喂食与自动加水控制系统设计 基于 STM32/51 单片机的宠物智能投喂饮水监控装置设计(023904)

【单片机毕业设计推荐】基于 STM32/51 单片机的智能定时喂食与自动加水控制系统设计 基于 STM32/51 单片机的宠物智能投喂饮水监控装置设计(023904)

文章目录 20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能技术路线项目演示关于我们项目案例源码获取 温馨提示:本人主页置顶文章(点我)有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)有 CSDN 平台…

2026/7/31 18:05:07 阅读更多 →
2026制造业桌面云选型排行,不同工厂适配方案详解

2026制造业桌面云选型排行,不同工厂适配方案详解

数字化转型进程中,制造企业普遍面临研发图纸泄密、产线终端运维繁重、工业软件算力分配失衡等现实阻碍,制造业桌面云依托虚拟化集中管控架构,适配工厂研发、生产、质检全流程场景。本文结合《工业虚拟化云桌面技术规范》给出客观选型评测标准…

2026/7/31 18:04:07 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻