在嵌入式系统中,“事件调度器”是连接中断事件、协议栈回调和业务处理的核心桥梁。一个高效、可扩展的事件调度器不仅能大幅提升代码结构清晰度,还能显著增强系统的可维护性、响应性与低功耗表现。本文将从 0 开始,逐步构建一个适用于 BLE/串口/传感器/定时器等多源事件的通用调度器。
📌 一、设计目标
本调度器需满足以下基本目标:
-
✅ 支持多源事件统一入队
-
✅ 支持模块解耦的事件分发
-
✅ 保证事件顺序一致性
-
✅ 兼容裸机与 RTOS(FreeRTOS)环境
-
✅ 可扩展性强(支持优先级、定时调度)
📦 二、核心架构概览
事件源(UART/BLE/TIMER)
↓(中断/回调)
事件结构体(event_t)
↓
事件队列(环形缓冲区 / 链表)
↓
调度器主循环 event_dispatch_loop()
↓
事件分发处理(模块 handler)
每个环节都保持职责单一,便于调试与模块替换。
🧱 三、事件结构体定义
typedef enum {
EVT_NONE = 0,
EVT_UART_RX,
EVT_BLE