EMS 知识库
首页 / knowledge/代码解析/midware/debug

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:

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. 备注与风险点

  1. 头文件未声明 EXTI2_IRQHandler:ate.c:84 定义了一个全局 ISR,但 ate.h 中没有原型。这本身是可行的(向量表按符号名链接),但也意味着该中断服务无法被其它编译单元显式引用,改动时容易漏掉调用关系。
  2. 头文件不导出任何内部状态:s_u8_passthrough_flag 与 s_u32_passthrough_tick 都是 static,外部无从观测超时剩余时间,调试时只能靠串口打印或反汇编。
  3. 包含卫士命名风格与工程其它文件不一致:本文件用 _ATE_H,同目录 board_test.h 用 __BOARD_TEST_H__、debug.h 用 __DEBUG_H,属于纯风格问题,无功能影响。
  4. 其余暂无。