Files
STM32F4-Base/App/task
wandering1 e0b02d397c 修复 P2 全部 10 项:错误传播/竞态/门控/文档失真
待办池 docs/待处理内容.md §3.2 的 10 个 P2 全部闭环;逐项落代码 + 注释说明。

P2-1  cfg_file: 受管键行超 CFG_LINE_TEST_MAX 拒绝保存(防重复键行)
P2-2  ch395f: DMA 失败传播状态 + 锁存通道故障 + 读不拷不可信数据
P2-7  net_select: LISTENING 不再恒判可读(消除 select 忙轮询地雷)
P2-8  time_sync: 核实 L3 pending 改写已闭环(net_recv_to 分片 + 总预算)
P2-9  sys_log: 挂载改幂等 + 卷锁,defaultTask 2s 重试建 /log
P2-10 sys_log: s_read_raw 纳入卷锁 try(读者/写者 unlink 互斥)
P2-11 net_task: RECONFIG 改 osEventFlagsWait 原子取走 + 清除
P2-12 app_cfg: APP_*_ENABLE 如实标注为未接线占位,删“开关”说法
P2-13 freertos: 产品构建 vTaskDelete(testTask) 回收 8KB CCM 栈
P2-15 download.bat: 先删旧日志 + 增“未产出日志”判定

P2-13 用 USER CODE 区回收而非生成区 #if 门控:生成区改动会被 CubeMX
重生成覆盖,本方案重生成不丢。P2-12 因产品定义 B0 未定、APP_NET_ENABLE
无单一接线点,按修复建议备选(删“开关”说法)处理。

验证:@build 0 错 0 警;主机单测 watchdog 39/39 + sys_clock 100/100 +
cfg_file 149/149(新增 TC-CFG-044);pre-commit --all-files 17/17。
2026-10-04 08:30:30 +08:00
..

App/task/ — FreeRTOS 任务实现

6 个任务的入口函数与任务体。任务创建在 Src/freertos.c(MX_FREERTOS_Init), 栈大小/优先级的唯一事实源也是 Src/freertos.c;本目录只放任务实现。

任务清单

文件 任务 优先级 职责
default_task.c/h defaultTask Normal FTL + FatFS 挂载、配置引擎属主、syslog 唯一写者、LED 指示
net_task.c/h netTask Normal net_stack_bring_up → 置 NET_READY → 循环 net_poll + net_process_messages
ui_task.c/h uiTask BelowNormal LVGL 界面(菜单 / 内容页 / 待机)+ 推流
adc_task.c/h (ADC 任务) — 高精度 ADC(TPAFE5160)数据采集
rs485_task.c/h (RS-485 任务) — 半双工 RS-485 协议通信
../sync/time_sync.c timeSyncTask Normal 墙钟时间同步(实现不在本目录,见 ../sync/README.md)

上表栈大小/优先级以 Src/freertos.c 为准(README.md/AGENTS.md 的任务表由 scripts/gen_task_table.py 生成,勿手抄)。

就绪屏障(重要)

任务间不用魔法延时,改用 App/app/sys_events.h 的 Event Flags:

  • SYS_EVT_NET_READY / SYS_EVT_STORAGE_READY 等是状态位——等待时必须 osFlagsWaitAny|osFlagsNoClear,不能用默认消费型等待(否则先到的消费者会清掉位, 导致 ftpTask 的 WaitAll(两位) 永不成立 → FTP 静默不监听)
  • SYS_EVT_CFG_SAVE / SYS_EVT_NET_RECONFIG 等命令位保持消费型等待

平台约束(改本目录前必读)

  • 内核启动前禁止任何 FreeRTOS/CMSIS-RTOS API 调用(osMessageQueueNew 等会杀死启动)
  • 就绪屏障位一律用 osFlagsNoClear
  • 内存预算紧张,改栈/缓冲前先核算(docs/内存管理/)

相关文档

  • 启动顺序与屏障:docs/架构设计/项目启动顺序管理.md
  • 内存与定栈规则:docs/内存管理/RAM使用分析与优化方案.md
  • 栈水位实测:scripts/stack_report.py