docs(ADC): 采样节拍设计说明只留现状,历史决策与台架记录移出
删除(已确定的决策与过程记录,无现状信息量) - §2 方案选型(方案 A 推荐 / 方案 B 备选与结论) - §9 变更记录整表(9 行"已实现 / 已验收 / 已落地 / 复核修正"叙事) - §7.1、§10.3、§11.5 三张台架实测对照表 + 反向验证记录 + boot_log 证据行 - 用户决策与过程编号(Task #32 P1-5 方案 a、B1、P0-1/P0-2、v2.0/v2.2/v2.7/v2.8、 "规划未预见""原规划写错了"更正叙事) - §4 代码改造清单(改造已完成)与 §8 / §10.5 的后续规划口吻 保留并补齐现状 - 链路总览(新增 TIM3 同源 Mermaid)· 实现落点表 · TIM3 配置与"为什么是 TIM3" (F4 触发清单是硬约束)· ADC1 + DMA 四条硬约束与半区无竞态推导 · 上电自校准 · TPAFE 侧契约与原子快照 · 就绪门与节拍缺失 fail-safe · 单周期时序 · 心跳计数逐个判读(含相位伪影为何阈值取 2)· 性能与资源特征 · 设计边界与已知代价(N-18 无同刻性、滞后一拍、TPAFE 未 DMA 化的前提未定、 调频能力现状)· 设计铁律 - 468 -> 344 行 顺带修掉文档自相矛盾 - 原 §3 / §4 仍在教人配 TIM6(§11 已改 TIM3)-> 全文统一 TIM3 - 上位需求引用写成 继电保护功能复现规划.md §3.2,实际 L1-1 在 §3.1 连带引用同步(7 文件 8 处) - App/algo/adc_input.c -> §8;App/task/adc_task.c -> §6;Src/main.c -> §3.3; Src/freertos.c -> §9 与 §10(顺带纠正已失效的"ADC 2 ms 忙等"表述,DMA 化后 单拍取数已零忙等) - 看门狗设计说明 §6 与 §9 / §4.4;ADC通道映射说明 §4 与 §6; 继电保护功能复现规划 §3.2 - 其中 2 处活断链 doc-links --all 抓不到(整行含"已消""已实现"状态词被豁免), 另写脚本按「文档名 + 章节号」全库扫出后修复 门禁 - doc-links --all(非 SDL2 问题 0,可判定 57% -> 58%)与 --sections-strict 通过 - no-mojibake / trailing-whitespace / end-of-file-fixer / id-check 通过; task-table / mem-numbers 一致;@build 0 错误 0 警告 - 改动文件均无 BOM、无 CR、U+FFFD = 0;CubeMX 文件的注释改动都落在 USER CODE 区
This commit is contained in:
+5
-5
@@ -148,11 +148,11 @@ const osThreadAttr_t timeSyncTask_attributes = {
|
||||
};
|
||||
/* B1(2026-10-10):ADC 采集消费者(TIM6 1 kHz 采样节拍 + 原子快照 + 帧统计)。
|
||||
* 手写于此而非 .ioc(同 timeSyncTask:不在 Tasks01 里 → 重生成会丢,靠审计 WARN 提示)。
|
||||
* ⚠ 优先级 AboveNormal(Task #32 P1-5 方案 a,2026-10-10):消费改由 TIM6 ISR 事件驱动后
|
||||
* 提优先级,使"被唤醒 → 立即抢占其余 Normal 任务",唤醒延迟固定为 µs 级。
|
||||
* 代价:本任务单拍最坏实测 adcm≈2.1 ms 会在 AboveNormal 上挤占 net/ftp/default/timeSync,
|
||||
* 其中 ADC 的 2 ms 忙等(App/algo/adc_input.c)尤其敏感 → 硬化方向见
|
||||
* docs/子系统设计/ADC采样节拍设计说明.md §10.4。 */
|
||||
* ⚠ 优先级 AboveNormal:消费由 TIM3 ISR 事件驱动,提优先级使"被唤醒 → 立即抢占其余
|
||||
* Normal 任务",唤醒延迟固定为 µs 级。
|
||||
* 代价:本任务单拍最坏 adcm≈2 ms 会在 AboveNormal 上挤占 net/ftp/default/timeSync;
|
||||
* 实测峰值来自每 10 s 心跳日志而非采集(STM32 侧已由 DMA 搬运,单拍取数 µs 量级)
|
||||
* → 耗时特征与代价见 docs/子系统设计/ADC采样节拍设计说明.md §9、§10。 */
|
||||
osThreadId_t adcTaskHandle;
|
||||
const osThreadAttr_t adcTask_attributes = {
|
||||
.name = "adcTask",
|
||||
|
||||
+1
-1
@@ -258,7 +258,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
||||
* → 两片转换器由同一硬件事件驱动,采样时刻对齐。
|
||||
* TIM3 与 BUSY EXTI(EXTI9_5_IRQn) 同为抢占优先级 6 → 互不抢占,
|
||||
* 读 RD 时序不会被下一次 CONVST 脉冲打断。详见
|
||||
* docs/子系统设计/ADC采样节拍设计说明.md §10。放 USER CODE 区(L2)。
|
||||
* docs/子系统设计/ADC采样节拍设计说明.md §3.3。放 USER CODE 区(L2)。
|
||||
* ⚠ 节拍源 v2.0 由 TIM6 改为 TIM3:F4 上 ADC1 的外部触发清单里没有 TIM6 TRGO
|
||||
* (TIM6/TIM7 的 TRGO 只接 DAC),详见 App/app/app_main.c 步骤 6 注释。
|
||||
* ⚠ 唤醒必须走 adc_tick_irq_notify(),**不要**在这里直接 osThreadFlagsSet:
|
||||
|
||||
Reference in New Issue
Block a user