FreeRTOS 任务状态查询

目录

任务相关API函数

 函数TaskPriorityGet()获取优先级

 函数uxTaskGetSystemState()获取任务状态

 函数xTaskGetHandle()

函数uxTaskGetStackHighWaterMark()

 函数eTaskGetState()

 函数vTaskList()


任务相关API函数

FreeRTOS 任务状态查询_第1张图片

 函数TaskPriorityGet()获取优先级

FreeRTOS 任务状态查询_第2张图片

FreeRTOS 任务状态查询_第3张图片

FreeRTOS 任务状态查询_第4张图片

FreeRTOS 任务状态查询_第5张图片

FreeRTOS 任务状态查询_第6张图片

 函数uxTaskGetSystemState()获取任务状态

FreeRTOS 任务状态查询_第7张图片FreeRTOS 任务状态查询_第8张图片

 TaskStatusArray是结构体指针,如果不给它赋予空间的话就是野指针,所以这里需要malloc
 FreeRTOS用pvPortMalloc    他是一个数组,每个数组有多少个大小,就是一个结构体大小
 判断是否malloc成功
 定义和ArraySize同类型的i
 用for循环,有多少个任务就打印多少次

\t是补全当前字符串长度到8的整数倍,最少1个最多8个空格,补多少要看你\t前字符串长度。

比如当前字符串长度10,那么\t后长度是16,也就是补6个空格。

如果当前字符串长度12,此时\t后长度是16,补4个空格

数组里面循环了5次,因为我们有5个任务         一个开始任务,开始任务里又创建两个任务
任务序号就是我们创建任务的过程,第一个任务创建开始任务,第二个是空闲任务,创建开始任务的同时也会创建空闲任务,开始任务创建完后会进入任务调度,在任务调度里会创建空闲任务IDLE
第三个就是定时器任务, 第四个是led0, 第五个是查询任务
任务的优先级和我们设定的一样1,2,3    空闲任务优先级是0,定时器优先级是31 所说0和31优先级我们不能用
跟中断优先级不一样,中断里面是数字越小优先级越高。但在我们多任务过程中,是数字越大优先级越大

FreeRTOS 任务状态查询_第9张图片

FreeRTOS 任务状态查询_第10张图片

 函数xTaskGetHandle()

FreeRTOS 任务状态查询_第11张图片

通过任务名字来获取句柄

FreeRTOS 任务状态查询_第12张图片

FreeRTOS 任务状态查询_第13张图片

 两者是一致的

函数uxTaskGetStackHighWaterMark()

FreeRTOS 任务状态查询_第14张图片

 来个延时,不然放在while里面飞的很快

 FreeRTOS 任务状态查询_第15张图片

FreeRTOS 任务状态查询_第16张图片

剩余148,我们定义200,说明我们用了(200-148)*4 = 208个字节

 函数eTaskGetState()

FreeRTOS 任务状态查询_第17张图片

FreeRTOS 任务状态查询_第18张图片 FreeRTOS 任务状态查询_第19张图片

1---就是就绪态意思

 函数vTaskList()

FreeRTOS 任务状态查询_第20张图片

char InfoBuffer[1000];

FreeRTOS 任务状态查询_第21张图片

 

FreeRTOS 任务状态查询_第22张图片 

开始任务是删除态,因为创建后就删除了 

你可能感兴趣的:(FreeRTOS笔记,FreeRTOS,单片机)