嵌入式编程之战:裸机VS实时系统

原创 云深之无迹 2025-02-18 10:00

嵌入式系统开发可以分为 裸机(Bare Metal) 和 RTOS(实时操作系统) 两种方式。

裸机开发意味着 没有 RTOS,程序直接运行在 MCU 上,所有任务调度 完全由开发者手动管理。裸机开发适用于 简单任务,低功耗系统,小型嵌入式设备,但当任务复杂到一定程度,就需要 RTOS 来管理。

裸机编程是 不依赖 RTOS,直接操作 MCU 硬件 的开发方式,通常采用:✅ 主循环(Super Loop)
✅ 中断驱动(Interrupt Driven)
✅ 状态机(State Machine)

int main() {    hardware_init();  // 硬件初始化(GPIO、UART、I2C、SPI)    while (1) {  // 主循环        task1();  // 处理传感器数据        task2();  // 处理按键输入        task3();  // 处理显示屏刷新    }}

这个编程起来就非常的简单,如程序所示。

说说裸机的问题->

  1. 任务管理困难:多个任务需要手动安排执行顺序 .因为是从头运行到尾部,一些子任务复杂,就要占用大量的CPU时间,下面的任务就执行不了。

  2. 实时性差:任务执行时间不可预测,容易卡死。这条就是1的后半段,后面的一些任务就饿死了。

  3. 同步与通信难:多个任务共享资源时,容易发生数据竞争。裸机之间的信息传输是需要global变量,这就有很多意想不到的问题,比如数据竞争什么的。

  4. 代码难以维护:任务逻辑复杂后,裸机程序难以维护。这个我觉得不是裸机的问题,纯粹就是写多了,都复杂。


这里总结了一些场景和用途

✅ 简单的单任务/少任务嵌入式系统 → 适合裸机
✅ 复杂的多任务、实时性要求高的系统 → 需要 RTOS

主循环(Super Loop),简单系统,如 LED 控制、按键扫描

void main() {    hardware_init();  // 硬件初始化    while (1) {        led_task();        button_task();        uart_task();    }}

这种代码最喜欢🌶

中断驱动(Interrupt Driven),事件驱动系统,如 UART、ADC 采集

void USART_IRQHandler() {      char data = USART_ReceiveData();      process_data(data);  }

✅ 减少 CPU 负担,数据来了才处理
❌ 任务间通信难,如果多个中断抢占,容易丢失数据,因为中断来的 时候,当前的数据是放在栈里面。

定时器 + 任务调度,定期任务,如 100ms 采集传感器数据

void TIM2_IRQHandler() {    if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {        sensor_read_task();        display_update_task();        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);    }}

✅ 定期任务调度,提高实时性
❌ 任务增多时,定时器调度难以管理。也就是说定时器的时间戳给每个子任务使用。

状态机(State Machine),按键检测、设备模式切换

typedef enum { IDLE, PROCESSING, ERROR } SystemState;SystemState current_state = IDLE;
void main() {    while (1) {        switch (current_state) {            case IDLE:                  if (button_pressed()) current_state = PROCESSING;                break;            case PROCESSING:                  process_task();                current_state = IDLE;                break;            case ERROR:                error_handle();                break;        }    }}

✅ 适用于复杂逻辑(如工控、状态机管理)
❌ 状态增多时,代码可读性下降

void Task1(void *argument) {    while (1) {        printf("任务 1 运行\n");        vTaskDelay(1000);    }}
void Task2(void *argument) {    while (1) {        printf("任务 2 运行\n");        vTaskDelay(2000);    }}
void main() {    xTaskCreate(Task1, "Task1"512NULL1NULL);    xTaskCreate(Task2, "Task2"512NULL2NULL);    vTaskStartScheduler();}

然后我们就可以写这种任务

RTC外设有什么用? 昨天不是写了一个RTC吗?我一直对定时器情有独钟,那我们就分析一下设计一个时钟怎么做?

闹钟应用通常需要 精准的时间管理、低功耗运行、定时唤醒,最佳选择是 MCU 内部的 RTC(Real-Time Clock)外设。

如果是设计一个引爆器,就是裸机了,感觉港剧里面的起爆器太low了,剪线?笑死,我把所有的传感器都加上,复杂的判断条件,精通的定时,谁都别想活。

  1. 初始化 RTC

  2. 设置 RTC 闹钟

  3. 进入低功耗模式

  4. RTC 到时间触发中断,唤醒 MCU

  5. 播放蜂鸣器 / LED 提示

  6. 等待用户停止闹钟

流程大概就是这样吧?

#include "stm32f4xx.h"
void RTC_Alarm_IRQHandler(void) {    if (RTC->ISR & RTC_ISR_ALRAF) {        RTC->ISR &= ~RTC_ISR_ALRAF// 清除闹钟标志位        printf("闹钟响了!\n");        buzzer_on();  // 打开蜂鸣器    }}
void RTC_SetAlarm(uint8_t hour, uint8_t min, uint8_t sec) {    RTC->ALRMAR = (hour << 16) | (min << 8) | sec;  // 设置闹钟时间    RTC->CR |= RTC_CR_ALRAIE;  // 使能闹钟中断}
void main() {    RTC_Init();  // 初始化 RTC    RTC_SetAlarm(7, 30, 0);  // 设置闹钟 7:30:00    enter_low_power_mode();  // 进入低功耗模式}

✅ 闹钟触发后 MCU 唤醒,执行 buzzer_on() 响铃
❌ 只能管理一个闹钟,多个闹钟需要手动写代码管理

我们来看看RTOS,

  1. 创建 RTC 任务

  2. 任务循环监听 RTC 时间

  3. 管理多个闹钟列表

  4. RTC 触发闹钟,发送任务通知

  5. 任务处理响铃逻辑

  6. 支持低功耗模式


#include "FreeRTOS.h"#include "task.h"#include "queue.h"
TaskHandle_t AlarmTaskHandle;
typedef struct {    uint8_t hour;    uint8_t min;    uint8_t sec;} AlarmTime_t;
QueueHandle_t xAlarmQueue;  // 闹钟队列
void RTC_Alarm_IRQHandler(void) {    BaseType_t xHigherPriorityTaskWoken = pdFALSE;    xTaskNotifyFromISR(AlarmTaskHandle, 0, eNoAction, &xHigherPriorityTaskWoken);    portYIELD_FROM_ISR(xHigherPriorityTaskWoken);}
void AlarmTask(void *pvParameters) {    AlarmTime_t alarm;    while (1) {        if (xQueueReceive(xAlarmQueue, &alarm, portMAX_DELAY)) {            printf("闹钟响了!时间:%02d:%02d:%02d\n", alarm.hour, alarm.min, alarm.sec);            buzzer_on();        }    }}
void main() {    xAlarmQueue = xQueueCreate(5, sizeof(AlarmTime_t));  // 创建闹钟队列    xTaskCreate(AlarmTask, "AlarmTask", 512, NULL, 1, &AlarmTaskHandle);    vTaskStartScheduler();}

✅ 支持多个闹钟,闹钟时间可以存入队列
✅ 任务管理,优先级可控,实时性高
✅ 可以在 buzzer_on() 之后,延迟一定时间自动关闭蜂鸣器

总结一下

评论 (0)
  • 在智能家居与物联网(IoT)技术快速发展的背景下,语音播报功能已成为烟雾报警器等安防设备提升用户体验的核心技术之一。厂家凭借其WTV、WTN、WT588F及WT2605C系列语音芯片,推出了三大烟雾报警器语音方案,覆盖传统、高集成度与智能化需求,为不同场景提供灵活选择。以下从技术特性、应用场景及行业价值三方面展开分析。一、方案对比与技术特性 方案类型核心芯片型号技术优势局限性适用场景传统分立方案WTN6/WT588F/WTV系列音质纯净,模块化设计便于维护;兼容性强,支持外接功放优化音
    广州唯创电子 2025-04-21 08:53 76浏览
  •   电磁环境模拟平台系统全解析   北京华盛恒辉电磁环境模拟平台系统是通过技术手段生成、调控和再现复杂电磁环境的专用设备,广泛应用于通信、电子、航空航天、国防等领域。其核心作用是为设备研发、测试和评估提供可控的电磁环境,验证系统在复杂电磁干扰下的性能与可靠性。   应用案例   目前,已有多个电磁环境模拟平台系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁环境模拟平台系统。这些成功案例为电磁环境模拟平台系统的推广和应用提供了有力支持。   一、系统构成   信号发生
    华盛恒辉l58ll334744 2025-04-21 09:40 66浏览
  •   数字化战场:军事态势视景仿真推演系统软件解析   北京华盛恒辉军事态势视景仿真推演系统软件是现代军事领域模拟战场态势、辅助指挥决策的关键工具。伴随信息技术发展,其在提升军事训练质量、优化作战指挥决策等方面的作用愈发显著。   一、系统概述   该系统借助数字化技术,构建高精度三维战场环境,模拟各类作战场景与武器装备运行状态,为军事指挥员及作战人员打造沉浸式战场体验。系统融合地理信息系统(GIS)、计算机图形学、人工智能等多学科技术,实现战场态势实时感知、动态推演与可视化呈现。   应
    华盛恒辉l58ll334744 2025-04-20 11:24 35浏览
  • 一、市场背景与竞争优势随着智能家居市场的爆发式增长,消费者对小家电的智能化、交互性需求显著提升。WTVxxx系列语音芯片凭借高性价比、卓越音质与功能集成度,已成为智能小家电领域的核心驱动方案。该系列芯片通过以下优势重塑行业格局:成本优化:集成MCU、语音播报、驱动控制等多功能模块,显著降低硬件成本与开发复杂度;智能化升级:支持语音交互、状态显示与智能控制,契合现代用户对高端体验的追求;快速迭代:兼容主流芯片架构,支持远程更新与硬件扩展,助力产品持续迭代。目前,WTVxxx芯片已广泛应用于扫地机器
    广州唯创电子 2025-04-21 08:32 71浏览
  •   智慧华盛恒辉国有单位招标标书查重系统介绍   1、建设国有单位招标标书查重系统的重大意义   (1)保障招标过程的公正性与透明度   在国有单位复杂的招标环境中,标书查重系统犹如一把利剑,精准切割出公平竞争的道路。该系统利用自动化比对与检测技术,快速揭露投标文件中潜藏的相似或重复内容,有效遏制了围标、串标及抄袭等恶劣行为,为招标过程披上了一层公正与透明的外衣。这不仅减少了人为干预的空间,更保障了合法投标人的权益,维护了市场的健康秩序,让每一次招标都成为真正的实力较量。   应用案例
    华盛恒辉l58ll334744 2025-04-20 23:07 69浏览
  •   战略仿真推演平台是一种基于计算机技术和仿真模型构建的决策支持系统,旨在通过模拟复杂战略环境,帮助决策者评估不同战略方案的效果、预测潜在风险并优化决策过程。此类平台广泛应用于军事、经济、能源、城市规划等领域,为高层决策提供科学依据。   应用案例   目前,已有多个战略仿真推演平台在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润战略仿真推演平台。这些成功案例为战略仿真推演平台的推广和应用提供了有力支持。   一、核心功能   多维度战略建模   动态推演与情景分析   
    华盛恒辉l58ll334744 2025-04-20 16:16 56浏览
  •   电磁信号模拟系统深度解析   一、系统概述   北京华盛恒辉电磁信号模拟系统作为半实物仿真测试系统,广泛应用于无线通信、军事训练等多领域。它通过软硬件结合,构建逼真电磁信号环境,用于测试电子设备在复杂电磁干扰下的性能表现。   应用案例   目前,已有多个电磁信号模拟系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁信号模拟系统。这些成功案例为电磁信号模拟系统的推广和应用提供了有力支持。   二、系统组成   装备模型库:涵盖雷达、通信设备等各类装备平台及电子装
    华盛恒辉l58ll334744 2025-04-21 10:48 53浏览
  •   电磁环境模拟软件系统深度解读   北京华盛恒辉电磁环境模拟软件系统是专业的技术工具,可生成、捕捉与分析电磁信号,为电气和电子设备搭建仿真测试环境。以下从功能、技术特性、应用场景、主流软件及发展趋势展开介绍。   应用案例   目前,已有多个电磁环境模拟软件系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁环境模拟软件系统。这些成功案例为电磁环境模拟软件系统的推广和应用提供了有力支持。   一、核心功能   电磁环境模拟   信号生成与处理   场景构建与仿真
    华盛恒辉l58ll334744 2025-04-21 10:21 63浏览
  •   国有单位科研项目审计管理系统解析   一、系统建设意义   北京华盛恒辉国有单位科研项目审计管理系统对科研项目管理至关重要,其意义贯穿管理效能提升、资金优化配置、科研合规推进等核心环节,深刻影响国家科技战略实施。   应用案例   目前,已有多个国有单位科研项目审计管理系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润国有单位科研项目审计管理系统。这些成功案例为国有单位科研项目审计管理系统的推广和应用提供了有力支持。   提升科研项目管理质效:作为数字化、智能化管理工
    华盛恒辉l58ll334744 2025-04-20 23:21 56浏览
  • 85RC16是一款铁电存储器(FRAM),具有低功耗、高耐久性、快速写入等优点。通过芯片文档,可以看到对比常用的eeprom它的一些优势与24C16的对比读写速度 :85RC16的读写速度更快,可达到与I2C总线速率相匹配的水平,没有像24C16那样的写操作延迟和页写限制,能够实现真正的随机字节写入,且不需要等待写周期完成,适合需要频繁、快速读写的应用场合。写入耐久性 :85RC16的写入耐久性更高,可承受的写入次数远超24C16,这使得其在需要频繁更新数据的应用中更具优势,使用寿命更长。功耗
    小手凉凉 2025-04-21 10:17 51浏览
  •   战略仿真推演系统设计方案   一、系统概述   1.1 系统定位   北京华盛恒辉战略仿真推演系统是面向政府、企业及军事机构的决策支持工具。它通过搭建虚拟环境,模拟真实战略场景,助力用户评估不同策略的潜在影响,优化决策流程,提升战略规划的科学性与前瞻性。   应用案例   目前,已有多个战略仿真推演系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润战略仿真推演系统。这些成功案例为战略仿真推演系统的推广和应用提供了有力支持。   二、系统架构设计   2.1 总体架
    华盛恒辉l58ll334744 2025-04-20 16:27 56浏览
  •   北京华盛恒辉作战仿真系统软件是现代军事领域不可或缺的重要工具,用于模拟作战环境、训练人员和评估作战方案。它借助计算机技术搭建虚拟战场,支撑复杂作战场景推演分析,为军事决策提供科学依据。以下从核心功能、技术架构、应用场景和发展趋势四个方面展开解析:   应用案例   目前,已有多个作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润作战仿真系统。这些成功案例为作战仿真系统的推广和应用提供了有力支持。   核心功能   战场环境建模:构建逼真的虚拟战场环境,涵盖地形、
    华盛恒辉l58ll334744 2025-04-20 11:06 29浏览
  •   北京华盛恒辉作战仿真系统软件平台是现代军事领域中用于模拟作战环境、评估作战方案、训练军事人员的重要工具。这些平台通过计算机技术构建虚拟战场,支持多兵种、多武器系统的协同作战仿真,为军事决策、战术训练和装备研发提供科学依据。以下从平台类型、核心技术、应用场景及发展趋势等方面进行详细介绍。   应用案例   目前,已有多个作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润作战仿真系统。这些成功案例为作战仿真系统的推广和应用提供了有力支持。   一、作战仿真系统软件平台
    华盛恒辉l58ll334744 2025-04-20 15:37 39浏览
  •   智慧华盛恒辉国有单位科研项目审计管理系统介绍   1、建设国有单位科研项目审计管理系统的重大意义   其深远意义体现在科研项目管理的核心环节,不仅关乎管理效能与成果质量的飞跃,还深刻影响着科研资金的优化配置、科研行为的规范性以及国家科技发展战略的顺利推进。   应用案例   目前,已有多个科研项目审计管理系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润科研项目审计管理系统。这些成功案例为科研项目审计管理系统的推广和应用提供了有力支持。   (1)强化科研项目管理的效
    华盛恒辉l58ll334744 2025-04-20 22:54 50浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦