任务相关的API函数-xTaskGetHandle()+vTaskGetInfo

 xTaskGetHandle

此函数根据任务名字获取的任务句柄,在使用函数xTaskCreate()或xTaskCreateStatic()创建任务的时候会给任务分配一个任务名,函数xTaskGetHandle()就是使用任务名字来查询其对应的任务句柄的.要使用此函数的话宏INCLUDE_xTaskGetHandle应该设置为1,此宏在FreeRTOS.h文件的194行

TaskHandle_t xTaskGetHandle( const char *pcNameToQuery )

参数;

pcNameToQuery :任务名,C语言字符串

返回值:

NULL:没有任务名pcNameToQuery所对应的任务

其他值:任务名pcNameToQuery所对应的任务句柄


vTaskGetInfo

此函数也是用来获取任务状态的,但是只能获取单个任务状态,任务的状态作息填充到pxTaskStatus,

使用此函数的话configUSE_TRACE_FACILITY要定义为1,此宏在FreeRTOSConfig.h文件的102行


void vTaskGetInfo( TaskHandle_t xTask, //要查找的任务的任务句柄

TaskStatus_t *pxTaskStatus, //指向类型为TaskStatus_t 的结构体变量

BaseType_t xGetFreeStackSpace, //TaskStatus_t 成员中有个usStackHighWaterMark ,

//设为pdFALSE来跳过这个步骤,pbTRUE就会去检查

eTaskState eState ) //结构体TaskStatus_t的成员eCurrentState就是这个eTaskState 类型的


typedef enum
{
eRunning = 0, //运行状态
eReady, //就绪态
eBlocked, //阻塞态
eSuspended, //挂起态
eDeleted, //任务被删除,任务控制块没有释放
eInvalid //无效
} eTaskState;

//第二步:函数vTaskGetInfo()的使用
TaskHandle_t TaskHandle;
TaskStatus_t TaskStatus;
printf("/***************第二步:函数vTaskGetInfo()的使用************/\r\n");
TaskHandle=xTaskGetHandle("led0_task"); //根据任务名获取任务句柄
//获取LED0_TASK的任务信息
vTaskGetInfo((TaskHandle_t)TaskHandle,//任务句柄
(TaskStatus_t*)&TaskStatus,//任务信息结构体
(BaseType_t)pdTRUE,//允许统计任务堆栈历史最小剩余大小
(eTaskState)eInvalid);//函数自己获取任务运行状态
//通过串口打印出指定任务的有关信息
printf("任务名: %s\r\n",TaskStatus.pcTaskName);
printf("任务编号: %d\r\n",(int)TaskStatus.xTaskNumber);
printf("任务状态: %d\r\n",TaskStatus.eCurrentState);
printf("任务当前优先级:%d\r\n",(int)TaskStatus.uxCurrentPriority);
printf("任务基础优先级:%d\r\n",(int)TaskStatus.uxBasePriority);
printf("任务堆栈基地址:%#x\r\n",(int)TaskStatus.pxStackBase);
printf("任务堆栈历史剩余最小值: %d\r\n",TaskStatus.usStackHighWaterMark);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值