3762c03bb4
新增(均已通过主机侧单测与构建,**台架存在未定位的间歇性回归,见下**): - App/algo/sample_ring.c/h:按语义通道的采样环缓冲(2 周波 = 40 点), 整帧压入 + 帧计数,供 L2 按窗取数。 - App/algo/phasor.c/h:全周傅氏相量层,覆盖规划 §3.2 的 L2-1/2/3/6/7—— 系数表按 docs/算法/傅氏算法详解.md §2.3 预乘 √2/N(fAmSQ 直接即有效值); 5 个数据驱动实例(IA/UA/UN 基波 + IA 二/五次谐波);暴力滑动窗; 计算区/使用区双区原子切换。 - test/host/phasor/:主机侧单测(52/52 PASSED,无需桩)——系数表逐项复核、 幅值/有效值/相位、直流与谐波抑制、任意次谐波提取、频率敏感性(±2Hz≤3%)、 环缓冲时序与回绕、实例层与双区交换。 - 集成:adc_task 每拍压帧 + 重算(v2.4);app_main 调 phasor_init(); Keil 工程挂 phasor.c/sample_ring.c(App/algo 已在 IncludePath)。 验证: - 主机单测 52/52 PASSED。 - @build 0 错误 0 警告;内存快照已刷新(RW_IRAM1 89,320→90,936 B)。 - 台架:L2 链路数据正常(ring=10001、skip=0、回读一致、相量日志可见), 但 10 次运行中 3 次出现 UI 任务看门狗停喂(mask=0x67 缺 TASK_WD_UI) → IWDG 复位;改动前基线 6 次运行 0 次。属**未定位的间歇性回归**。 未完成:定位并修复该间歇性复位;L2 文档状态与登记簿条目尚未按结论更新。
App/app/ — 应用入口与全局定义
应用层的入口与全局定义:初始化编排、功能编译开关、跨模块的就绪事件定义。
文件一览
| 文件 | 作用 |
|---|---|
app_main.c/h |
应用初始化入口 app_main_init:时间子系统优先 → RS485 → NAND → ADC → 诊断(在 osKernelStart 之前执行) |
app_cfg.h |
功能模块编译开关(裁剪测试套件/模块用) |
sys_events.h |
系统就绪事件定义(CMSIS-RTOS v2 Event Flags:SYS_EVT_NET_READY / SYS_EVT_STORAGE_READY / SYS_EVT_FTP_READY / SYS_EVT_TIMESYNC_READY 及命令位) |
初始化顺序(app_main_init)
sd2506_init // 时间子系统优先,使后续日志带时间戳
sys_clock_init // 墙钟(RTC 故障降级并返回 -1 → 触发自检)
rs485_init
gd5f2gq5ue_init
tpafe5160_init
SD2506 诊断 // ID / 时间 / 温度 / 电池
tpafe5160_start_conv_irq // 首次 ADC 转换
⚠️ 以上全部在内核启动前执行 → 禁止任何 FreeRTOS/CMSIS-RTOS API 调用 (
osMessageQueueNew等会杀死启动)。内核前日志走无锁静态缓冲(见../log/)。
相关文档
- 架构全景:
docs/架构设计/项目架构总览.md - 启动顺序与就绪屏障:
docs/架构设计/项目启动顺序管理.md - 墙钟:
docs/子系统设计/系统墙钟时间维护说明.md