首页 / knowledge/代码解析/midware/interface
interface.h
源文件路径:
midware/interface/interface.h所属模块:midware/interface(外部接口层) 代码行数:24
1. 文件职责
本文件是 midware/interface 目录的对外声明头,仅集中导出两个 uCOS-II 任务入口函数 task_interface_parse() 与 task_modbus_rtu()。它处在固件"应用接口层"的最外层:向下屏蔽了 DRM、干接点、Modbus-RTU、充电桩、并机方案自适应等一堆具体业务,向上只给 user/main.c 提供两个可被 OSTaskCreateExt() 直接挂载的任务桩。它本身不含数据结构、不含宏常量(除调试开关 DEBUG_INTERFACE),是典型的最小暴露头文件。任务体实现在同目录的 interface.c 中,由 user/main.c 创建并调度。
2. 关键数据结构与宏
| 名称 | 类型(结构体/枚举/宏/联合体) | 说明 |
|---|---|---|
__INTERFACE_H | 宏 | 头文件防重复包含哨兵,定义于 midware/interface/interface.h:9,配对 #ifndef / #define |
DEBUG_INTERFACE | 宏 | 调试计数开关,定义为 0(midware/interface/interface.h:13);置 1 时 interface.c 会累加 g_t_task_run_status.u32_task_interface_cnt / u32_task_modbus_rtu_cnt |
本文件未定义任何结构体、枚举或联合体。
3. 函数清单
本文件只含函数声明,无函数定义。
| 函数名 | 作用域(static/全局) | 说明(一句话) |
|---|---|---|
task_interface_parse | 全局(声明) | 接口解析任务入口,500 ms 周期轮询 DRM 判定、干接点逻辑、参数保存与 EPO 控制 |
task_modbus_rtu | 全局(声明) | Modbus-RTU 通讯任务入口,负责并机方案自适应、充电桩控制、Sunspec 数据刷新 |
4. 核心逻辑解析
本文件是纯声明文件,无逻辑。其两个声明的实现在 midware/interface/interface.c 中,由 user/main.c 创建:
task_interface_parse:user/main.c:222用OSTaskCreateExt()创建,优先级TASK_INTERFACE_PRIO = 13u(UCOSII/uCOS-CONFIG/app_cfg.h:64),注释标注"任务间隔 500ms"。task_modbus_rtu:user/main.c:288创建,优先级TASK_MODBUS_RTU_PRIO = 19u(UCOSII/uCOS-CONFIG/app_cfg.h:70),注释标注"Uart5 信号量触发 100ms"。
DEBUG_INTERFACE 宏被 interface.c:227 与 interface.c:375 两处 #if 使用,用于在调试构建里对外暴露任务运行次数计数(对应 g_t_task_run_status)。
5. 对外接口
本文件导出的函数与全局变量:
| 名称 | 类型 | 使用者 |
|---|---|---|
task_interface_parse | 函数 | user/main.c(user/main.c:24 include 本头文件,user/main.c:222 创建任务) |
task_modbus_rtu | 函数 | user/main.c(user/main.c:288 创建任务) |
DEBUG_INTERFACE | 宏 | 仅 midware/interface/interface.c 使用 |
本文件调用的外部函数/变量: 无(纯声明)。
6. 依赖关系
- 依赖:无
#include,不依赖任何其它头文件。 - 被依赖:
midware/interface/interface.c:13与user/main.c:24两个文件 include 本头文件。
7. 备注与风险点
- 文件头注释仍写着
@file :com485do.h(midware/interface/interface.h:2),是从旧文件com485do.h改名/复制过来后未更新的残留注释,会误导代码检索。 - 头文件里没有声明
interface.c中实际存在的另外两个全局函数query_parameter_save_tags()(midware/interface/interface.c:46)和parallel_precept_change()(midware/interface/interface.c:239)。它们未加static,属于"隐式全局"——没有原型检查,一旦跨文件误用或签名改动不会被编译器发现。建议把这两个函数加上static,或补齐声明。 interface.c中还有静态函数epo_control_handle(),同样未在此声明(合理,静态函数本就不该导出)。