首页 / knowledge/代码解析/索引/功能索引
hmi(人机界面:按键 / LCD / 指示灯)功能反查索引
本页目录1. 按键输入与菜单导航2. 身份认证与密码3. 参数编辑、取值范围与下发4. 界面渲染与显示调度(LCD)5. 背光、看门狗与 HMI 任务调度6. 指示灯(LED 灯板)7. WS2812 长灯带(新增 RKP / 林内项目灯带)8. 系统级动作(重启 / 复位 / 出厂 / 模式)9. 数据落盘与配置存储10. 对外接口与上下游耦合11. 已知缺陷、未接线与占位代码(排查用)文件清单核对
覆盖源文件:12 个(
hmi/目录全部源文件,含hmi/led/子目录)。文档本体见docs/knowledge/代码解析/hmi/。 用法:在「想找的功能」列里搜关键词,即可定位到源文件与逐文件分析文档。 范围说明:本索引只覆盖hmi/key.c(.h)、hmi/lcd.c(.h)、hmi/led.c(.h)与新增的hmi/led/{app_led,app_led_cfg,led_dev}.c(.h)。hmi/ui/ui_*.c的 77 个界面绘制文件不在本次范围内(其分析文档另存于_excluded_hmi_ui_docs/)。
1. 按键输入与菜单导航
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 按键事件总入口在哪 / 一次按键从哪里开始处理 | Key_Handle | hmi/key.c | hmi/key.c.md |
| 上、下、确认、返回四个方向键分别怎么处理 | Key_Handle_Up、Key_Handle_Down、Key_Handle_Enter、Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 长按返回键直接跳到"重启系统"确认页 | Key_Handle | hmi/key.c | hmi/key.c.md |
| 主菜单点"设置"为什么有时要输密码、有时直接进 | Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| 菜单是几级的 / 每个界面的父界面是哪个 | Key_Handle_Enter、Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 返回上级界面时高亮光标回到原来那一行 | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 界面里的"光标"和"正在编辑第几位"是什么变量 | LCD_RTDB.ui.bCurrCursor、LCD_RTDB.ui.bCurrSubCursor、Key_Handle_Up | hmi/lcd.h、hmi/key.c | hmi/lcd.h.md |
| 无按键多久会自动弹回主界面 | Key_Handle、Lcd_Handler | hmi/key.c、hmi/lcd.c | hmi/lcd.c.md |
| 逆变器过载时按返回键清故障 | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 一共定义了多少个界面窗口 / 界面 ID 枚举 | ui_page、mWindowMain | hmi/lcd.h | hmi/lcd.h.md |
| 显示屏类型枚举(字符屏 / 灯条 / 双色板 / 亚克力板) | DISPLAY_TYPE_E | hmi/key.h | hmi/key.h.md |
| 亚克力灯板点位编号枚举(LED_RED/LED_BLUE/LED_DB0..7) | LED_LAMP_PANE_ID_E | hmi/key.h | hmi/key.h.md |
配套头文件:
hmi/key.h(按键服务与登录模块的对外契约,含全部参数范围宏)、hmi/lcd.h(窗口枚举与LCD_RTDB契约)。
2. 身份认证与密码
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 用户密码 / 安装商密码 / 管理员密码的常量定义在哪 | USER_PASSWORD、INSTALLER_PASSWORD、ADMIN_PASSWORD | hmi/key.h | hmi/key.h.md |
| 管理员 7 位密码为什么拆成两次 4 位输入 | ADMIN_PASSWORD、Key_Handle_Enter | hmi/key.h、hmi/key.c | hmi/key.c.md |
| 密码校验状态机 / 半程正确的位域标志 | Key_Handle_Enter、admin_password_half_right | hmi/key.c | hmi/key.c.md |
| 密码页怎么退格和退回主菜单 | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 免密重进设置页(记住上次登录身份) | set_ui_login_info、is_last_id_legal、g_t_ui_login | hmi/key.c | hmi/key.c.md |
| 登录身份多久过期(管理员/安装商 1 小时、用户 30 分钟) | Last_ID_Legal_Handle | hmi/key.c | hmi/key.c.md |
| 当前登录身份存在哪个变量里 / 权限分派依据 | identity | hmi/key.c | hmi/key.c.md |
| 四级身份枚举(无 / 用户 / 安装商 / 管理员) | ID_E | hmi/key.h | hmi/key.h.md |
| 登录记忆结构体(上次身份 + 时间戳) | LOGIN_IN_T | hmi/key.h | hmi/key.h.md |
| 修改开机密码并保存 | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| "退出并注销身份"开关怎么生效 | Key_Handle_Up、Key_Handle_Cancel、LCD_RTDB.Setting_Exit_Flag | hmi/key.c | hmi/key.c.md |
3. 参数编辑、取值范围与下发
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 数值加减怎么实现 / 按位编辑与上下限回绕算法 | Button_Handle、n_power | hmi/key.c | hmi/key.c.md |
| 设置项可调范围(上下限)在哪定义 / 改范围改哪里 | GRID_VAC_VOLT_MAX、CURRENT_LIMIT_MAX、CT_RATE_MAX 等 *_MAX/*_MIN/*_DEFAULT | hmi/key.h | hmi/key.h.md |
| IP / 子网掩码 / 网关怎么编辑(每段三位独立进位) | Button_ChangeEthernetSettingLiteral | hmi/key.c | hmi/key.c.md |
| 系统日期时间编辑 / 闰年与月份天数处理 | Key_Handle_Up、Key_Handle_Down | hmi/key.c | hmi/key.c.md |
| 参数是"改就下发"还是"退出才下发"(双缓冲) | Key_Handle_Cancel、Key_Handle_Up、LCD_RTDB.bSettingSaveFlag | hmi/key.c | hmi/key.c.md |
| 边改边下发并通知云端"本地设置已变更" | Key_Handle_Up、Key_Handle_Down | hmi/key.c | hmi/key.c.md |
| 栅格保护(安规电压/频率保护点)怎么写入逆变器 | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 安规保护阈值时间、GFCI 阈值、并网等待/重连延时写入 | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 并网功率限制 / 一键强制充电设置页(用户权限) | Key_Handle_Up、Key_Handle_Down、Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| 功率因数 / PQ 曲线 / Q-U / P-U 设置页 | Key_Handle_Enter、Key_Handle_Cancel、LCD_RTDB.POWER_FACTOR | hmi/key.c、hmi/lcd.h | hmi/lcd.h.md |
| 工作时间页(两段充电/放电时段、截止 SOC) | Key_Handle_Up、Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 并机(AC/DC 并联)设置与状态 | Key_Handle_Enter、Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 油机(Generator)启用/模式/功率/SOC/时间设置 | Key_Handle_Enter、Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| CT 变比、电表或 CT 选择、备份盒配置 | Key_Handle_Enter、Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| PV 装机容量(储能侧 / 并网侧)设置与越界夹取 | Key_Handle_Enter、Button_Handle | hmi/key.c | hmi/key.c.md |
| 系统模式(DC / AC / Hybrid)设置 | Key_Handle_Enter、Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 语言(English / German)切换 | Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| 以太网 IP 方式与地址写入并触发网络重初始化 | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 进界面时对参数做合法性夹取(越界值纠正) | Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| 语言枚举与语言维度 | LANGUAGE_E、English、German、Language_Max | hmi/lcd.h | hmi/lcd.h.md |
显示运行数据库 LCD_RTDB 里有哪些设置字段 | struct LCD_Display、LCD_RTDB | hmi/lcd.h | hmi/lcd.h.md |
| 功率因数页的编辑缓存结构体 | struct POWER_Factor | hmi/lcd.h | hmi/lcd.h.md |
4. 界面渲染与显示调度(LCD)
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 每一帧屏幕该画哪个界面 / 界面调度总入口 | Lcd_Handler | hmi/lcd.c | hmi/lcd.c.md |
| 切换界面时为什么要整屏清一次(残留字符) | Lcd_Handler | hmi/lcd.c | hmi/lcd.c.md |
界面数据契约 LCD_RTDB 在哪里定义、谁在写 | LCD_RTDB | hmi/lcd.c、hmi/lcd.h | hmi/lcd.c.md |
| 窗口状态子结构(当前窗口 / 上次窗口 / 光标) | struct LCD_Window | hmi/lcd.h | hmi/lcd.h.md |
中英双语文本怎么选(Lag 宏 / 三目表达式) | LANGUAGE_E(配合 Lag) | hmi/lcd.h | hmi/lcd.h.md |
界面绘制函数在哪声明 / 有多少个 ui_* | Lcd_Handler、hmi/ui/ui.h | hmi/lcd.c | hmi/lcd.c.md |
每个可编辑参数对应的写入标志位(*_flag)协议 | LCD_RTDB 的 *_flag 字段、bSettingSaveFlag | hmi/lcd.h | hmi/lcd.h.md |
| 故障日志页的 10 行 × 17 字符绘制缓冲 | LCD_RTDB.bErrorLogDrawBuffer | hmi/lcd.h | hmi/lcd.h.md |
| 主界面 ID 与复位后的落点 | mWindowMain | hmi/lcd.h | hmi/lcd.h.md |
5. 背光、看门狗与 HMI 任务调度
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| LCD 背光多久自动熄灭(30 秒无操作) | Backlight_Handle、Backlight_Reload | hmi/key.c | hmi/key.c.md |
| 背光重置接口的声明放在哪个头文件 | Backlight_Reload | hmi/lcd.h(实现在 hmi/key.c) | hmi/lcd.h.md |
| 调试页为什么背光不灭 / 界面不被自动刷走 | Key_Handle、Lcd_Handler、LCD_RTDB.Admin_Debug | hmi/key.c、hmi/lcd.c | hmi/lcd.c.md |
| HMI 任务是谁创建的、优先级和周期是多少 | task_hmi_parse | hmi/key.c | hmi/key.c.md |
| HMI 主循环一轮都干了什么(按键 / 灯显 / 画屏 / 喂狗) | task_hmi_parse | hmi/key.c | hmi/key.c.md |
| 显示屏类型热插拔后重新初始化 | task_hmi_parse | hmi/key.c | hmi/key.c.md |
| 每 10 分钟无条件重新初始化 LCD(显示自恢复) | task_hmi_parse | hmi/key.c | hmi/key.c.md |
| 看门狗在 HMI 任务里怎么喂 | task_hmi_parse | hmi/key.c | hmi/key.c.md |
6. 指示灯(LED 灯板)
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 面板指示灯整体刷新在哪 / 每轮怎么算颜色 | led_display | hmi/led.c | hmi/led.c.md |
| 开机(或切换机型)时的灯显自检 | led_display_test | hmi/led.c | hmi/led.c.md |
| "正常灯"(绿)的判定条件 | led_display | hmi/led.c | hmi/led.c.md |
| "故障灯"(红)的判定条件与闪红节拍 | led_display | hmi/led.c | hmi/led.c.md |
| 电池灯(黄)就绪 / 已连未工作 / 未连接三态 | led_display | hmi/led.c | hmi/led.c.md |
| 电表灯的判定(AC/Hybrid 双表、UPS 分支) | led_display | hmi/led.c | hmi/led.c.md |
| 联网灯的五级优先级与红/绿闪烁含义 | led_display | hmi/led.c | hmi/led.c.md |
| 指示灯闪烁节拍怎么实现(100/200/500/1000/2000 ms) | led_display | hmi/led.c | hmi/led.c.md |
| 故障码用 5 颗灯显示(最低置位 bit 编码) | analysis_error_code、led_display | hmi/led.c | hmi/led.c.md |
| SOC 电量柱怎么按 6 档点亮 | led_display | hmi/led.c | hmi/led.c.md |
| 固件下载 / 升级时的流水灯效果 | led_display | hmi/led.c | hmi/led.c.md |
| 不同机型(四代灯条 / 双色小灯板 / 五代亚克力板 / LCD 面板)的灯差异 | led_display | hmi/led.c | hmi/led.c.md |
| 灯板各引脚分别代表什么(db0..db7、LED_Red、LED_Blue) | led_display | hmi/led.c | hmi/led.c.md |
| 产线 ATE / 云端下发的"手动强制点灯"通路 | led_get_bit_state、led_hw_control、task_hmi_parse | hmi/key.c | hmi/key.c.md |
| LED 模块对外的两个接口(自检 + 刷新)在哪声明 | led_display_test、led_display | hmi/led.h | hmi/led.h.md |
配套头文件:
hmi/led.h(只声明led_display_test/led_display,并转发app_led.h);机型与显示类型宏来自hmi/key.h。
7. WS2812 长灯带(新增 RKP / 林内项目灯带)
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 灯带刷新入口函数与设计周期 | led_display_task、LED_TASK_PERIOD | hmi/led/app_led.c、hmi/led/app_led.h | hmi/led/app_led.c.md |
| 灯带每帧怎么编码(SOC 柱 + 系统状态长灯带) | led_build_full_buffer | hmi/led/app_led.c | hmi/led/app_led.c.md |
| SOC 转灯珠档位(每颗 5%) | get_bms_soc | hmi/led/app_led.c | hmi/led/app_led.c.md |
| 灯带亮度档位调节(0~11 档) | apply_brightness、u8_led_brightness_value | hmi/led/app_led.c | hmi/led/app_led.c.md |
| 联网状态怎么决定短灯带颜色(白=已登录,蓝=未登录) | get_network_status、get_soc_color_to_rgb | hmi/led/app_led.c、hmi/led/app_led_cfg.c | hmi/led/app_led_cfg.c.md |
| 系统状态色(灭/绿/红/黄)是在哪里判定的 | sys_current_status_color、led_display | hmi/led.c | hmi/led.c.md |
| 状态枚举 → RGB 颜色的查表函数 | get_sys_color_status | hmi/led/app_led_cfg.c | hmi/led/app_led_cfg.c.md |
| 长灯带颜色宏(SYS_COLOR_*)与颜色枚举定义在哪 | SYS_COLOR_OFF/GREEN/RED/YELLOW、STATUS_LED_COLOR_E、SOC_LED_COLOR_E、led_color_t | hmi/led/app_led_cfg.h | hmi/led/app_led_cfg.h.md |
| 灯珠数量、每颗 bit 数、DMA 缓冲大小 | RKP_LED_NUM、LED_LONG_NUM、LED_SOC_NUM、LED_BITS、LED_BUFFER_SIZE | hmi/led/led_dev.h | hmi/led/led_dev.h.md |
| WS2812 位时序常量(数据 0/1 的比较值) | T0_PULSE、T1_PULSE | hmi/led/led_dev.h | hmi/led/led_dev.h.md |
| 灯带初始化(TIMER4 800 kHz PWM + DMA0 通道 0) | ws2812_init | hmi/led/led_dev.c | hmi/led/led_dev.c.md |
| 一帧灯带怎么发出去(触发 DMA / 忙标志握手) | ws2812_update、g_u_ws2812_flag | hmi/led/led_dev.c | hmi/led/led_dev.c.md |
| 单颗灯珠颜色写入与 GRB 字节序转换 | ws2812_set_color_hex、ws2812_set_color_rgb | hmi/led/led_dev.c | hmi/led/led_dev.c.md |
| 清空整条灯带 | ws2812_set_color_buffer_clear | hmi/led/led_dev.c | hmi/led/led_dev.c.md |
| 整条灯带单色点亮 / 熄灭 | ws2812_set_on_off_color_light | hmi/led/led_dev.c | hmi/led/led_dev.c.md |
| 灯带编码缓冲与读写互斥标志定义在哪 | g_u16_ws2812_data、g_u_ws2812_flag、WS2812_FLAG_U | hmi/led/led_dev.c、hmi/led/led_dev.h | hmi/led/led_dev.h.md |
| 灯带应用层对外头文件(导出哪些函数) | led_display_task、led_test_color_cycle | hmi/led/app_led.h | hmi/led/app_led.h.md |
8. 系统级动作(重启 / 复位 / 出厂 / 模式)
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 长按返回键重启系统的完整流程 | Key_Handle、Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| 机器复位(inverter_reset + 延时 5 秒 + 硬复位) | Key_Handle_Enter、Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 恢复出厂设置(保留 SN/MAC) | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 工厂测试模式一键预设(自动 IP + DC 系统 + MaxFeedin 100% + AS4777_2) | Factory_Mode_Setting | hmi/key.c | hmi/key.c.md |
| 清计量 / 清电量 | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 历史/故障日志页的入口与光标上限 | Button_Get_ErrorLogInfo、Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| 管理员调试页(进入后兼作背光常亮开关) | Key_Handle_Enter、Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 版本信息 / 关于页入口 | Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
9. 数据落盘与配置存储
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 设置改完后怎么落盘 / 存到哪个分区页 | Key_Handle_Cancel、Key_Handle_Up、Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| 每编辑一个字段就置一个标志,退出时统一提交 | LCD_RTDB.bSettingSaveFlag、各 *_flag 字段 | hmi/lcd.h | hmi/lcd.h.md |
| 参数标志位的"写—清"协议 / 谁负责清零 | LCD_RTDB 的约 55 个 *_flag、bSettingSaveFlag | hmi/lcd.h | hmi/lcd.h.md |
| 语言设置的落盘路径 | Key_Handle_Enter、LCD_RTDB.u8_language | hmi/key.c | hmi/key.c.md |
| 安规设置落盘(先写逆变器再存 E2) | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 新开机密码保存 | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 日志/设置相关的请求标志位(出厂复位、整机复位、清表、清电量) | LCD_RTDB.bFactoryReset、MachineReset、bResetMeter、bResetEnergy | hmi/lcd.h | hmi/lcd.h.md |
10. 对外接口与上下游耦合
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| 谁创建/驱动 HMI 任务(上层调用点) | task_hmi_parse | hmi/key.c | hmi/key.c.md |
| 按键处理函数的对外原型在哪 | Key_Handle、Key_Handle_Up/Down/Enter/Cancel | hmi/key.h | hmi/key.h.md |
| 通用数值编辑函数的对外原型 | Button_Handle、Button_ChangeEthernetSettingLiteral、n_power | hmi/key.h | hmi/key.h.md |
| 登录记忆全局变量对外的声明 | g_t_ui_login | hmi/key.h | hmi/key.h.md |
| 背光重载接口的跨模块声明(声明与实现分属两个文件) | Backlight_Reload | hmi/lcd.h、hmi/key.c | hmi/lcd.h.md |
| 界面调度接口的对外声明 | Lcd_Handler | hmi/lcd.h | hmi/lcd.h.md |
| 显示数据库被哪些模块共享(键值/界面/网络/配置任务) | LCD_RTDB | hmi/lcd.c、hmi/lcd.h | hmi/lcd.c.md |
| 灯带缓冲与标志被 DMA 硬件层使用(分层倒置) | g_u16_ws2812_data、g_u_ws2812_flag | hmi/led/led_dev.h | hmi/led/led_dev.h.md |
| LED 头文件被板级初始化/板测模块包含 | led_display、led_display_test | hmi/led.h | hmi/led.h.md |
| 灯带应用头文件被 Modbus 模块包含(潜在远程改亮度路径) | led_display_task、u8_led_brightness_value | hmi/led/app_led.h、hmi/led/app_led.c | hmi/led/app_led.h.md |
| 状态色全局量作为"灯显 ↔ 灯带"的唯一状态通道 | sys_current_status_color | hmi/led.c(写)、hmi/led/app_led.c(读) | hmi/led/app_led.c.md |
| 机型/显示类型宏对 HMI 的编译期裁剪 | DISPLAY_TYPE_E | hmi/key.h | hmi/key.h.md |
11. 已知缺陷、未接线与占位代码(排查用)
| 想找的功能(关键词 / 用户可能的问法) | 入口函数或符号 | 源文件 | 文档 |
|---|---|---|---|
| GFCI 60/150/300 mA 阈值下发时全部用了 30 mA 的值(复制粘贴 bug) | Key_Handle_Cancel | hmi/key.c | hmi/key.c.md |
| 油机 TOU 起止小时按减号一下归零(上下位权不一致) | Key_Handle_Up、Key_Handle_Down | hmi/key.c | hmi/key.c.md |
| 哪些设置页"能改不能存"(PF / PQ / DRM / AS4777 写路径被注释) | Key_Handle_Cancel、Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| GFCI 使能位没有落盘(断电丢失) | Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| 强制充电标志与截止 SOC 不持久化 | Key_Handle_Up、Key_Handle_Down、Key_Handle_Enter | hmi/key.c | hmi/key.c.md |
| 空函数残留:进故障日志页前的钩子没做事 | Button_Get_ErrorLogInfo | hmi/key.c | hmi/key.c.md |
| 只声明不实现的函数(调用会在链接期报错) | Button_Get_SystemTime | hmi/key.h | hmi/key.h.md |
| 全工程零引用的死宏(频率下垂率、降功率延时、功率百分比限制) | GRID_FREQ_DROOPRATE_MAX、GRID_OF_REDUCE_POWER_DELAY_TIME_MAX、INVERTER_POWER_PERCENT_LIMIT_MAX | hmi/key.h | hmi/key.h.md |
| 有枚举但无 case 的窗口(进去会停在空白屏) | mWindowSettingsUserFuncGridFreqLimitSustainedOp、Lcd_Handler | hmi/lcd.h、hmi/lcd.c | hmi/lcd.h.md |
| 结构体字段名与类型不一致(u8_ 前缀却是 u16 / s32_ 前缀却是无符号) | LCD_RTDB.u8_system_mode、s32_generator_rated_power | hmi/lcd.h | hmi/lcd.h.md |
| 灯带整条链路未接线(无任务调用,初始化后不再刷新) | led_display_task | hmi/led/app_led.c | hmi/led/app_led.c.md |
| 灯带亮度索引越界风险(无 0~11 钳位) | apply_brightness、u8_led_brightness_value | hmi/led/app_led.c | hmi/led/app_led.c.md |
| 灯带自检函数声明了但没有实现 | led_test_color_cycle | hmi/led/app_led.h | hmi/led/app_led.h.md |
| 灯带颜色宏成了死代码(实现里写的是字面量) | SOC_COLOR_WHITE、SOC_COLOR_BLUE、led_color_t | hmi/led/app_led_cfg.h | hmi/led/app_led_cfg.h.md |
| 灯带缓冲越界无保护(led_idx ≥ 122 会写穿 SDRAM) | ws2812_set_color_hex、ws2812_set_color_rgb | hmi/led/led_dev.c | hmi/led/led_dev.c.md |
| 灯带忙标志跨任务/中断读改写会丢标志(灯带冻结) | g_u_ws2812_flag | hmi/led/led_dev.h、hmi/led/led_dev.c | hmi/led/led_dev.h.md |
| 灯带位数/脉冲常量与注释不符(T1_PULSE、LED_SOC_NUM 精度) | T1_PULSE、LED_SOC_NUM、RKP_LED_NUM | hmi/led/led_dev.h | hmi/led/led_dev.h.md |
非 ALPHAESS 机型下长灯带恒灭(写入被 #if 排除) | sys_current_status_color、led_display | hmi/led.c | hmi/led.c.md |
指示灯用 abs() 做时间差,49.7 天回绕时会相位错乱 | led_display | hmi/led.c | hmi/led.c.md |
| 无操作回主界面的超时阈值与注释(27 s vs 9 s)不符 | Lcd_Handler、Key_Handle | hmi/lcd.c、hmi/key.c | hmi/lcd.c.md |
文件清单核对
| # | 源文件 | 文档 | 在表中出现的位置 |
|---|---|---|---|
| 1 | hmi/key.c | hmi/key.c.md | §1–§5、§8–§11(按键、密码、参数下发、背光、ATE 点灯、缺陷) |
| 2 | hmi/key.h | hmi/key.h.md | §1、§2、§3、§7、§10、§11(*_MAX/*_MIN 范围宏、密码常量、身份/显示类型枚举、死宏) |
| 3 | hmi/lcd.c | hmi/lcd.c.md | §1、§4、§5、§9、§10、§11(Lcd_Handler 调度、LCD_RTDB 实体定义) |
| 4 | hmi/lcd.h | hmi/lcd.h.md | §1–§5、§9–§11(ui_page 窗口枚举、LCD_RTDB 结构体、*_flag 协议、Backlight_Reload 声明) |
| 5 | hmi/led.c | hmi/led.c.md | §6、§7、§10、§11(led_display/led_display_test/analysis_error_code、sys_current_status_color 写入) |
| 6 | hmi/led.h | hmi/led.h.md | §6、§10(led_display、led_display_test 声明及被包含关系) |
| 7 | hmi/led/app_led.c | hmi/led/app_led.c.md | §7、§10、§11(led_display_task、led_build_full_buffer、get_bms_soc、apply_brightness) |
| 8 | hmi/led/app_led.h | hmi/led/app_led.h.md | §7、§10、§11(led_display_task、LED_TASK_PERIOD、led_test_color_cycle) |
| 9 | hmi/led/app_led_cfg.c | hmi/led/app_led_cfg.c.md | §7(get_sys_color_status、get_soc_color_to_rgb) |
| 10 | hmi/led/app_led_cfg.h | hmi/led/app_led_cfg.h.md | §7、§11(SYS_COLOR_*、STATUS_LED_COLOR_E、SOC_LED_COLOR_E、sys_current_status_color 声明) |
| 11 | hmi/led/led_dev.c | hmi/led/led_dev.c.md | §7、§11(ws2812_init、ws2812_update、ws2812_set_color_hex/rgb、清屏) |
| 12 | hmi/led/led_dev.h | hmi/led/led_dev.h.md | §7、§10、§11(灯珠数/缓冲/时序常量、WS2812_FLAG_U、g_u16_ws2812_data) |
配套头文件关系(均为纯声明头,逻辑在对应 .c):
hmi/key.h→hmi/key.chmi/lcd.h→hmi/lcd.c(并额外声明hmi/key.c的Backlight_Reload)hmi/led.h→hmi/led.chmi/led/app_led.h→hmi/led/app_led.chmi/led/app_led_cfg.h→hmi/led/app_led_cfg.chmi/led/led_dev.h→hmi/led/led_dev.c