ate.h
源文件路径:
midware/debug/ate.h所属模块:midware/debug(设备中间件 - 板级调试/产线测试) 代码行数:21
1. 文件职责
本文件是 ATE 模拟串口透传模块(ate.c)的对外声明头文件,只做两件事:用包含卫士 _ATE_H 防止重复包含,以及把透传标志读取接口 get_passthrough_flag() 与透传状态机驱动接口 passthrough_detection() 暴露给工程其它模块。
它处于"接口层"位置,本身不含任何逻辑、宏常量或数据结构,因此不参与数据流,只在编译期决定谁可以调用透传模块。真正驱动透传的是 midware/auxiliary/system_aux.c 中的 task_system_aux,真正消费透传状态的是 midware/inverter/inverter.c、hmi/led.c、hmi/ui/ui_main.c。
2. 关键数据结构与宏
| 名称 | 类型 | 说明 |
|---|---|---|
_ATE_H | 宏(包含卫士) | 防止 ate.h 被重复包含(ate.h:11-12) |
本文件未定义任何结构体、枚举、联合体或位域,也未定义任何功能宏常量。
3. 函数清单
本文件不含函数定义,仅含 2 个函数声明:
| 函数名 | 作用域 | 说明 |
|---|---|---|
get_passthrough_flag | 全局(声明,ate.h:18) | 读取当前是否处于 ATE 串口透传状态,定义在 ate.c:117 |
passthrough_detection | 全局(声明,ate.h:19) | 周期性检测并驱动透传状态的进入/退出,定义在 ate.c:163 |
4. 核心逻辑解析
本文件没有可展开的逻辑。它只完成单向的接口暴露,等价于把 ate.c 中两个非 static 函数登记为模块 API:
- 调用侧用于切换的接口是
passthrough_detection(),由task_system_aux每 400 ms 调一次(midware/auxiliary/system_aux.c:2085),任务内部没有信号量或邮箱参与。 - 调用侧用于查询的接口是
get_passthrough_flag(),被逆变器通信主循环(midware/inverter/inverter.c:1086/1103/1114/1219/1237/1247)和 HMI(hmi/led.c:388、hmi/ui/ui_main.c:778)读取,作为"暂停业务通信、显示测试画面"的判据。
ate.c 中另外两个对外可见的函数 EXTI2_IRQHandler(中断服务)和 set_passthrough_flag(static)都没有在本头文件声明——前者由中断向量表直接引用,后者是文件私有。
5. 对外接口
本文件导出
| 名称 | 类型 | 供谁使用 |
|---|---|---|
get_passthrough_flag(void) | 函数声明 | midware/inverter/inverter.c、hmi/led.c、hmi/ui/ui_main.c |
passthrough_detection(void) | 函数声明 | midware/auxiliary/system_aux.c |
_ATE_H | 包含卫士宏 | 编译单元自身 |
本文件不导出任何全局变量。
本文件调用的外部函数/变量
仅 #include "chip.h"(ate.h:13),用于取得 u8 等基础类型定义。不调用任何函数、不引用任何变量。
6. 依赖关系
依赖
system/sys/chip.h(基础类型、位带宏、GD32 SPL 汇集头)。
被依赖
midware/debug/ate.c(本模块实现)、midware/auxiliary/system_aux.c、midware/inverter/inverter.c,以及 HMI 侧的 hmi/led.c、hmi/ui/ui_main.c——所有这些文件通过 ate.h 拿到透传查询/驱动接口。
7. 备注与风险点
- 头文件未声明
EXTI2_IRQHandler:ate.c:84定义了一个全局 ISR,但ate.h中没有原型。这本身是可行的(向量表按符号名链接),但也意味着该中断服务无法被其它编译单元显式引用,改动时容易漏掉调用关系。 - 头文件不导出任何内部状态:
s_u8_passthrough_flag与s_u32_passthrough_tick都是static,外部无从观测超时剩余时间,调试时只能靠串口打印或反汇编。 - 包含卫士命名风格与工程其它文件不一致:本文件用
_ATE_H,同目录board_test.h用__BOARD_TEST_H__、debug.h用__DEBUG_H,属于纯风格问题,无功能影响。 - 其余暂无。