Day1 任务的创建和删除

发布时间:2026/9/12 20:00:18
Day1 任务的创建和删除 跟着正点原子整理了一些笔记一、任务控制块 TCBtskTaskControlBlock每个任务都有独立 TCB相当于任务的身份证内核靠 TCB 管理任务typedef struct tskTaskControlBlock { volatile StackType_t * pxTopOfStack; /* 任务栈栈顶必须是TCB第一个成员上下文切换保存恢复用 */ ListItem_t xStateListItem; /* 任务状态列表项 */ ListItem_t xEventListItem; /* 任务事件列表项 */ UBaseType_t uxPriority; /* 任务优先级数值越大优先级越高 */ StackType_t * pxStack; /* 任务栈起始地址 */ char pcTaskName[configMAX_TASK_NAME_LEN];/* 任务名字 */ …… /* 其余省略 */ } tskTCB;二、动态创建任务xTaskCreate()BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, /* 指向任务函数的指针 */ const char * const pcName, /* 任务名字最大长度configMAX_TASK_NAME_LEN */ const configSTACK_DEPTH_TYPE usStackDepth, /* 任务堆栈大小字为单位 */ void * const pvParameters, /* 传递给任务函数的参数 */ UBaseType_t uxPriority, /* 任务优先级范围0 ~ configMAX_PRIORITIES - 1 */ TaskHandle_t * const pxCreatedTask /* 任务句柄操作任务的标识 */ );使用步骤上层调用宏configSUPPORT_DYNAMIC_ALLOCATION配置为1定义函数入口参数编写任务函数函数内部实现申请堆栈内存 TCB 任务控制块内存TCB 结构体成员赋值添加新任务到就绪列表创建后任务直接进入就绪态等待调度器调度运行三、静态创建任务xTaskCreateStatic()TaskHandle_t xTaskCreateStatic ( TaskFunction_t pxTaskCode, const char * const pcName, const uint32_t ulStackDepth, void * const pvParameters, UBaseType_t uxPriority, StackType_t * const puxStackBuffer, //栈缓冲区数组地址 StaticTask_t * const pxTaskBuffer//TCB任务控制块缓冲区地址 );使用步骤宏configSUPPORT_STATIC_ALLOCATION配置为1定义空闲任务 定时器任务 的任务堆栈及 TCB实现 2 个接口函数vApplicationGetIdleTaskMemory()vApplicationGetTimerTaskMemory()定义函数入口参数编写任务函数内部实现TCB 结构体成员赋值添加新任务到就绪列表对比小结·动态内核自动申请任务控制块内存简单内存碎片风险TaskHandle_t * const pxCreatedTask // 任务句柄操作任务的标识·静态用户预先分配任务控制块内存无 mallocStackType_t * const puxStackBuffer //栈缓冲区数组地址StaticTask_t * const pxTaskBuffer //TCB任务控制块缓冲区地址四、任务删除vTaskDeletevoid vTaskDelete(TaskHandle_t xTaskToDelete);功能将任务从就绪、阻塞、挂起、事件列表全部移除。重要注意点参数为NULL删除当前正在运行的任务自己内存释放规则空闲任务负责释放系统分配的内存用户自己 malloc 申请的内存必须在任务删除前手动释放否则内存泄漏使用步骤宏INCLUDE_vTaskDelete配置为1传入任务句柄NULL 代表删除自身内部执行流程根据任务句柄找到待删除任务的 TCBNULL 代表删自己将任务从所有关联链表就绪 / 阻塞 / 挂起 / 事件移除判断任务类型删除自身加入等待删除列表内存由空闲任务后续释放删除别的任务直接释放内存任务计数 - 1更新下一个任务的阻塞超时时间防止被删任务刚好是下一个超时任务

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询