当前位置: 首页 > news >正文

嵌入式学习笔记 - freeRTOS动态创建任务时传入的任务句柄参数

FreeRTOS把任务句柄定位void类型指针:

typedef void * TaskHandle_t;

static TaskHandle_t  AppTaskCreate_Handle = NULL;

以下为创建任务函数:

/* 创建AppTaskCreate任务 */
  xReturn = xTaskCreate((TaskFunction_t )AppTaskCreate,  /* 任务入口函数 */
                        (const char*    )"AppTaskCreate",/* 任务名字 */
                        (uint16_t       )512,  /* 任务栈大小 */
                        (void*          )NULL,/* 任务入口函数参数 */
                        (UBaseType_t    )1, /* 任务的优先级 */
                        (TaskHandle_t*  )&AppTaskCreate_Handle);/* 任务控制块指针的地址 */ 

以下为调用函数实体:

  BaseType_t    xTaskCreate(    TaskFunction_t pxTaskCode,
                            const char * const pcName,
                            const uint16_t usStackDepth,
                            void * const pvParameters,
                            UBaseType_t uxPriority,
                            TaskHandle_t * const pxCreatedTask )

FreeRTOS在用动态方式创建任务时,最后一个参数传入的是任务句柄的指针的地址,也就是指针的指针,而被调用函数实体使用的是指针的地址,而不是这个指针。

 以下是函数内部使用这个参数的具体部分,如果这个参数被赋值过,也是就是参数(这个参数是一个指针地址)里面有指针,也就是用户定义过这个指针,就进行赋值操作,否则无任何操作,后续程序也不能使用这个任务。

if( ( void * ) pxCreatedTask != NULL )
    {
        /* Pass the handle out in an anonymous way.  The handle can be used to
        change the created task's priority, delete the created task, etc.*/
        *pxCreatedTask = ( TaskHandle_t ) pxNewTCB;
    }
    else
    {
        mtCOVERAGE_TEST_MARKER();
    }

http://www.xdnf.cn/news/770131.html

相关文章:

  • ERP管理系统:Java+Vue,含源码及文档,涵盖采购、销售、库存等业务,优化企业运营
  • 洛雪音乐+多种音源同步更新,附带安装教程 -【PC端/安卓端】音乐软件
  • PART 6 树莓派小车+QT (TCP控制)
  • 计算机科技笔记: 容错计算机设计05 n模冗余系统 其他复杂结构
  • 深入解析支撑向量机(SVM):原理、推导与实现
  • 【数据分析】第二章 Python基础
  • JUC并发编程(一)
  • 6.2本日总结
  • SOC-ESP32S3部分:25-HTTP请求
  • Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)
  • DeepSeek模型安全部署与对抗防御全攻略
  • 通俗易懂解析:@ComponentScan 与 @MapperScan 的异同与用法
  • 连接天际,守护通信—5G航天时代的电流守卫与浪涌盾牌
  • 智慧零工平台前端开发实战:从uni-app到跨平台应用
  • 逐步检索增强推理的跨知识库路由学习
  • H3C 交换机基本命令详解
  • docker运行程序Killed异常排查
  • 在考古方向遥遥领先的高校课程建设-250602
  • SpringBoot手动实现流式输出方案整理以及SSE规范输出详解
  • 【速通RAG实战:进阶】23、RAG应用规范化全流程标准框架:开发、部署、监控企业级最佳实践
  • imx6ull(0):烧录、启动
  • 设计模式(行为型)-中介者模式
  • 【技术支持】安卓开发中queryUsageStats不准确的问题
  • 【linux 入门】第六章 磁盘分区+网络配置
  • NodeJS全栈WEB3面试题——P7工具链 测试
  • 自定义Shell命令行解释器
  • FreeBSD 14.3 候选版本附带 Docker 镜像和关键修复
  • SpringBoot项目搭建指南
  • 【笔记】如何卸载 MSYS2 中不同工具链的 numpy 包
  • 【Java基础】Java中的HashSet详解