diff --git a/Docs/30_architecture/main.md b/Docs/30_architecture/main.md index 36f4c0c..555b3c8 100644 --- a/Docs/30_architecture/main.md +++ b/Docs/30_architecture/main.md @@ -119,61 +119,62 @@ typedef struct { ### 4.1 系统层级依赖与调用图 ```mermaid -graph TD - %% 定义层级背景色与分组 +graph LR + %% --- 硬件抽象与时基层 (左侧) --- + subgraph LayerHW ["硬件抽象与时基层 (HW Layer)"] + Timer1["Timer 1 (1ms中断)"] + ADC["ADC (电量检测)"] + Flash["IAP (Flash读写)"] + GPIO["GPIO (引脚中断/控制)"] + end + + %% --- 外设驱动层 (中间) --- + subgraph LayerDRV ["外设驱动层 (DRV Layer)"] + KEY["KEY (按键扫描/队列)"] + RF["RF (LR690L收发)"] + PM["PM (功耗电源管理)"] + AMOLED["AMOLED (屏幕绘制)"] + LED["LED (RGB彩灯时序)"] + MOTOR["MOTOR (马达异步震动)"] + end + + %% --- 应用逻辑层 (右侧) --- subgraph LayerAPP ["应用逻辑层 (APP Layer)"] MainScheduler["主循环调度器 (main.c)"] SysStateMachine["SysState 业务状态机"] - SoftRTC["软件 RTC 计时器"] + SoftRTC["SoftRTC 软件时钟"] end - subgraph LayerDRV ["外设驱动层 (DRV Layer)"] - AMOLED["Truly RM69310 屏幕绘制"] - RF["LR690L RF 编解码及发射"] - KEY["按键检测与队列缓冲"] - PM["极低功耗电源管理"] - LED["WS2812B 双彩灯控制"] - MOTOR["振动马达异步时序"] - end + %% --- 连线关系:时基与底层输入驱动外设 --- + Timer1 ==>|1ms时基中断| KEY + Timer1 ==>|1ms中断分频| MOTOR + Timer1 ==>|中断异步控制| LED + Timer1 ==>|秒计数器累加| SoftRTC + + GPIO -.->|外部中断沿触发| RF + GPIO -.->|按键电平读取| KEY - subgraph LayerHW ["硬件抽象与时基层 (HW Layer)"] - Timer1["Timer 1 (1ms 中断时基)"] - ADC["ADC (12位电量采集)"] - Flash["IAP (内嵌 Flash 读写)"] - GPIO["GPIO (端口控制/中断唤醒)"] - end + %% --- 连线关系:外设动作驱动与底层交互 --- + PM -->|SHUT引脚开关SGM3833| GPIO + AMOLED -->|SPI接口像素写指令| GPIO + LED -->|P2.6输出彩灯数据| GPIO + MOTOR -->|P2.4输出马达电平| GPIO - %% --- 依赖与调用连线 --- - - %% 硬件时基驱动外设异步处理 (由 ISR 驱动,非阻塞) - Timer1 -->|1ms 中断调度| KEY - Timer1 -->|分频 10ms 驱动| MOTOR - Timer1 -->|中断分频闪烁| LED - Timer1 -->|秒级分频累加| SoftRTC - - %% 外设层对硬件抽象层的调用 - AMOLED -->|SPI 端口操作| GPIO - RF -->|INT2 沿中断捕获| GPIO - KEY -->|引脚高阻上拉输入| GPIO - PM -->|SHUT 引脚控制 SGM3833| GPIO - LED -->|P2.6 SPI_MOSI 时序| GPIO - MOTOR -->|P2.4 PWM 电平输出| GPIO - - %% 应用层与外设层、硬件层的交互 (事件驱动 & 主循环轮询) - MainScheduler -->|1. 轮询读入按键事件| KEY - MainScheduler -->|2. 轮询捕获 RF 数据包| RF - MainScheduler -->|3. 喂看门狗| GPIO - - MainScheduler -->|分发事件与控制跳转| SysStateMachine - - SysStateMachine -->|重绘标志 Redraw=1 触发| AMOLED - SysStateMachine -->|读取/保存配对配置| Flash - SysStateMachine -->|启动特定防区闪烁/爆闪| LED - SysStateMachine -->|启动特定防区马达震动| MOTOR - SysStateMachine -->|休眠判定与硬件断电睡眠| PM - SysStateMachine -->|主动发射对码/SOS载波| RF - SysStateMachine -->|读取电量及充电状态| ADC - SysStateMachine -->|获取/更新待机时间| SoftRTC + %% --- 连线关系:主循环轮询输入 --- + KEY ==>|压入环形队列 / 主循环读出| MainScheduler + RF ==>|解码成功包 / 主循环获取| MainScheduler + MainScheduler ==>|喂看门狗| GPIO + + %% --- 连线关系:状态机控制外设输出 --- + MainScheduler -->|分发事件| SysStateMachine + SysStateMachine -->|读取电量及状态| ADC + SysStateMachine -->|读写配对防区数据| Flash + SysStateMachine -->|休眠判定/深度睡眠控制| PM + SysStateMachine -->|Redraw=1 触发重绘| AMOLED + SysStateMachine -->|射频包发射| RF + SysStateMachine -->|指示灯闪烁指示| LED + SysStateMachine -->|马达震动反馈| MOTOR + SysStateMachine -->|获取与同步时间| SoftRTC ``` ### 4.2 架构设计与依赖原则说明