2.2 KiB
2.2 KiB
模块拆分 - 系统核心控制与存储 (docs/50_module-breakdown/mod-sys.md)
本模块定义手环系统的生命周期、时间计数器、定时中断调度器以及断电保存数据库模块。
1. 模块职责说明
- 职责范围:
- 驱动系统主状态机运转(
current_state)。 - 提供 RTC 软时钟维护(
current_hour,current_min,current_sec)。 - 利用 Timer 1 产生 1ms 定时器中断,维护毫秒滴答计数器并作为其他外设时效的基础。
- 实现 IAP 读写底层函数,对防区数据库进行存取与读取。
- 驱动系统主状态机运转(
- 模块依赖:
- 依赖
mod-lcd.md进行 UI 状态重绘。 - 依赖
mod-rf.md提供 RF 解码信号与数据包注入。 - 依赖
mod-key.md响应按键动作。
- 依赖
2. 数据结构定义
2.1 传感器插槽结构体 (Sensor_Slot)
typedef struct {
u32 addr; // 24位 EV1527 地址
u8 type; // 传感器类型
u8 zone; // 防区类别 (0: 永久防区, 1: 可撤布防区)
char name[16]; // 法语自定义名称
} Sensor_Slot;
2.2 系统状态枚举 (SystemState)
typedef enum {
STATE_NORMAL,
STATE_ARMED,
STATE_DISARMED,
STATE_PAIR_MENU,
STATE_PAIR_WAIT,
STATE_PAIR_CONFIRM,
STATE_PAIR_SUCCESS,
STATE_PAIR_FAIL,
STATE_ALARMING,
STATE_SOS_EMITTED
} SystemState;
3. 模块接口说明
3.1 定时与时钟函数
void Timer1_Init(void):配置 Timer 1 作为 1ms 中断源,并使能全局中断。void Timer1_Isr(void) interrupt 3:ISR 中断处理,自增时间滴答、维护 LED 闪烁周期、马达振动波形定时,以及维护软件 RTC(自增current_sec并在满 60 秒时触发主界面分钟刷新)。
3.2 IAP 数据库存储接口
void Load_Database(void):从 Flash 扇区0xFE0000读取 16 组传感器配置载入内存的sensor_list。void Save_Database(void):擦除 Flash 扇区并将内存中的sensor_list写入 Flash。void Add_Sensor(u32 addr, u8 type):向sensor_list添加传感器信息并自动调用Save_Database()。bit Check_Sensor_ID(u32 addr, u8 *out_slot_index):在数据库中检索该地址码,若存在则返回它的槽位索引。