/* * 模块名称:Task Handles(内核任务句柄与属性块的集中声明) * 模块功能:把散落在各 .c 里的跨文件裸 extern 收拢成一份有名字的契约,供栈水位观测、 * 看门狗位图、按句柄取剩余栈等消费方引用 * 适用平台:STM32F407ZGTx * 作者:王建锋 * 创建日期:2026-10-22 * 修改记录: * v1.0 2026-10-22 王建锋 从 App/task/default_task.c 的 18 行局部 extern 收拢而来。 * 唯一定义处仍是 Src/freertos.c(CubeMX 生成的任务表),本文件 * 只是引用契约:新增/改名任务必须同步这里,否则报错落在链接期 * 而不是静默——这是有意的(原先每加一个任务就往 default_task.c * 再抄两行 extern,抄漏一行就是读别人的栈)。 */ #ifndef TASK_HANDLES_H #define TASK_HANDLES_H #include "cmsis_os.h" /* osThreadId_t / osThreadAttr_t */ #ifdef __cplusplus extern "C" { #endif /* * 以下符号全部定义于 Src/freertos.c(CubeMX 任务表,只写 USER CODE 区,不可外移)。 * p_attr->stack_size 是「配置栈大小」的唯一起点;实测最坏链与余量台账见 * docs/内存管理/RAM使用分析与优化方案.md 的 2.3 与 4.0.6 小节(此处不重复数字)。 * testTask 仅在启用板级测试套件时创建,未创建时句柄为 NULL(消费方须判空)。 */ extern osThreadId_t defaultTaskHandle; extern osThreadId_t netTaskHandle; extern osThreadId_t ftpTaskHandle; extern osThreadId_t testTaskHandle; extern osThreadId_t uiTaskHandle; extern osThreadId_t timeSyncTaskHandle; extern osThreadId_t adcTaskHandle; extern osThreadId_t iec104TaskHandle; extern osThreadId_t protectTaskHandle; extern const osThreadAttr_t defaultTask_attributes; extern const osThreadAttr_t netTask_attributes; extern const osThreadAttr_t ftpTask_attributes; extern const osThreadAttr_t testTask_attributes; extern const osThreadAttr_t uiTask_attributes; extern const osThreadAttr_t timeSyncTask_attributes; extern const osThreadAttr_t adcTask_attributes; extern const osThreadAttr_t iec104Task_attributes; extern const osThreadAttr_t protectTask_attributes; #ifdef __cplusplus } #endif #endif /* TASK_HANDLES_H */