Initial commit: CCU621_M firmware project with BLE debug link support.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-08 17:28:36 +08:00
commit 9ceb218f80
1597 changed files with 724159 additions and 0 deletions
+129
View File
@@ -0,0 +1,129 @@
# app_init 模块说明(app_init.c / app_init.h
> 本文档描述 `CCU621_M` 工程中 `app_init.c` 与 `app_init.h` 的职责、接口与使用约束。
[返回主说明](./../../README.md)
## 快速跳转
- [1. 模块职责](#1-模块职责)
- [2. 涉及文件](#2-涉及文件)
- [3. 对外接口](#3-对外接口)
- [4. app_os_init 初始化流程](#4-app_os_init-初始化流程)
- [5. 任务表说明(当前版本)](#5-任务表说明当前版本)
- [6. 依赖关系](#6-依赖关系)
- [7. 维护注意事项](#7-维护注意事项)
- [返回主说明 README](./../../README.md)
---
## 1. 模块职责
`app_init` 是应用层任务初始化总入口,负责:
- 维护统一任务表 `my_task_data[]`(名称/优先级/栈/周期/入口函数/参数);
-`app_os_init()` 中统一创建任务(`xTaskCreate`);
- 维护任务ID枚举 `TASK_ID` 与任务表下标一一对应;
- 提供任务周期、任务名称等统一访问宏;
- 为 lwIP 提供 `MY_TCPIP_NAME/MY_TCPIP_PRIO/MY_TCPIP_SIZE` 参数来源。
> 说明:当前工程是“集中创建任务”模式,不同于 `CCU601E_D` 的“各模块内部 `*_init()` 分散创建”模式。
---
## 2. 涉及文件
| 文件 | 说明 |
|---|---|
| `app/app_init/app_init.c` | 任务表定义 + `app_os_init()` 创建逻辑 |
| `app/app_init/app_init.h` | 栈/周期宏、`TASK_ID`、任务结构体、访问宏 |
| `app/app_init/task_lock.c/h` | 任务锁统一接口(每任务一个锁句柄) |
---
## 3. 对外接口
### 3.1 函数
| 符号 | 说明 |
|---|---|
| `void app_os_init(void)` | 应用任务初始化总入口(由 `main.c` 调用) |
### 3.2 全局数据
| 符号 | 说明 |
|---|---|
| `const MY_TASK_DATA my_task_data[MY_TASK_NUM]` | 全部任务配置表 |
### 3.3 关键类型与宏
- `MY_TASK_DATA`:任务名称、优先级、栈(字节)、周期(ms)、入口函数、入口参数;
- `TASK_ID`:任务ID**必须与 `my_task_data[]` 顺序一致**
- `MY_TASK_NUM`:任务数量(由 `TASK_ID` 枚举尾项决定);
- `mSleep(x)``vTaskDelay(pdMS_TO_TICKS(x))` 封装;
- `MY_GET_SLEEP_TIME(task_id)`:取任务周期;
- `MY_GET_TASK_NAME(task_id)`:取任务名称;
- `MY_TCPIP_NAME/MY_TCPIP_PRIO/MY_TCPIP_SIZE`:由 `my_task_data[TASK_ID_TCPIP]` 映射得出,供 lwIP 配置使用。
---
## 4. `app_os_init()` 初始化流程
当前流程(以 `app_init.c` 为准):
1.`MY_SHELL_EN=1`:执行 `userShellInit()`
2. 遍历 `my_task_data[]`
3.`task_entry != NULL` 的任务执行 `xTaskCreate(...)`
4. 忽略 `task_entry == NULL` 的条目(如 `EthIf``TCP/IP` 由 lwIP 内部创建)。
---
## 5. 任务表说明(当前版本)
`my_task_data[]` 当前主要任务:
- `EthIf`(占位,lwIP线程)
- `TCP/IP`(占位,lwIP线程)
- `DataColl`
- `FaultCheck`
- `MduComm`
- `MyShell`(条件编译)
- `UiComm`
- `WatchDog`
- `MeterColl`
- `MyLog`
- `EthLink`
> `EthIf`、`TCP/IP` 仅用于参数对齐与状态展示,不由 `app_os_init` 直接创建。
---
## 6. 依赖关系
-`main.c` 调用:`app_os_init()`
- 依赖模块:
- `mylog/collect_ctrl/fault_cheak/mdu_comm/ui/meter_calculate/wdt_task`
- `BSP/net_lwip``eth_link_thread`
- `BSP/letter_shell`(条件编译)
---
## 7. 维护注意事项
1. 新增任务时必须同步修改:
- `TASK_ID` 枚举;
- `my_task_data[]` 表项;
- 相关任务源文件中的任务ID宏(若使用模板化风格)。
2. `my_task_data[]``TASK_ID` 顺序不一致会导致:
- 周期读取错误;
- 日志任务名错误;
- 看门狗计数映射异常。
3. 若调整 `TCP/IP` 参数,建议只改任务表对应项,不在其他位置重复写常量。
4. `MY_SHELL_EN` 会影响任务数量与任务ID布局(`TASK_ID_MyShell` 条件编译)。
---
## 关联文档
- 主索引:[`CCU621_M/README.md`](./../../README.md)
- 本文位置:`app/app_init/app_init模块说明.md`