9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
3.9 KiB
3.9 KiB
app_init 模块说明(app_init.c / app_init.h)
本文档描述
CCU621_M工程中app_init.c与app_init.h的职责、接口与使用约束。
快速跳转
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 为准):
- 若
MY_SHELL_EN=1:执行userShellInit(); - 遍历
my_task_data[]; - 对
task_entry != NULL的任务执行xTaskCreate(...); - 忽略
task_entry == NULL的条目(如EthIf、TCP/IP由 lwIP 内部创建)。
5. 任务表说明(当前版本)
my_task_data[] 当前主要任务:
EthIf(占位,lwIP线程)TCP/IP(占位,lwIP线程)DataCollFaultCheckMduCommMyShell(条件编译)UiCommWatchDogMeterCollMyLogEthLink
EthIf、TCP/IP仅用于参数对齐与状态展示,不由app_os_init直接创建。
6. 依赖关系
- 被
main.c调用:app_os_init() - 依赖模块:
mylog/collect_ctrl/fault_cheak/mdu_comm/ui/meter_calculate/wdt_taskBSP/net_lwip(eth_link_thread)BSP/letter_shell(条件编译)
7. 维护注意事项
- 新增任务时必须同步修改:
TASK_ID枚举;my_task_data[]表项;- 相关任务源文件中的任务ID宏(若使用模板化风格)。
my_task_data[]与TASK_ID顺序不一致会导致:- 周期读取错误;
- 日志任务名错误;
- 看门狗计数映射异常。
- 若调整
TCP/IP参数,建议只改任务表对应项,不在其他位置重复写常量。 MY_SHELL_EN会影响任务数量与任务ID布局(TASK_ID_MyShell条件编译)。
关联文档
- 主索引:
CCU621_M/README.md - 本文位置:
app/app_init/app_init模块说明.md