一、任务相关 API 函数预览
二、任务相关 API 函数详解
1. 函数 uxTaskPriorityGet()
此函数用于获取指定任务的任务优先级,若使用此函数,需在 FreeRTOSConfig.h 文件中设
置配置项 INCLUDE_uxTaskPriorityGet 为 1,此函数的函数原型如下所示:
UBaseType_t uxTaskPriorityGet(const TaskHandle_t xTask);
2. 函数 vTaskPrioritySet()
此函数用于设置指定任务的优先级,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配
置项 INCLUDE_vTaskPrioritySet 为 1,此函数的函数原型如下所示:
void vTaskPrioritySet(TaskHandle_t xTask,UBaseType_t uxNewPriority);
3. 函数 uxTaskGetSystemState()
此函数用于获取指定任务的状态信息,若使用此函数,需在 FreeRTOSConfig.h 文件中设置
配置项 configUSE_TRACE_FACILITY 为 1,此函数的函数原型如下所示:
UBaseType_t uxTaskGetSystemState(TaskStatus_t * const pxTaskStatusArray,const UBaseType_t uxArraySize,configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime);
函数 uxTaskGetSystemState()的形参 pxTaskStatusArray 指向变量类型为 TaskStatus_t 的变量
的首地址,可以是一个数组,用来存放多个TaskStatus_t类型的变量,函数 uxTaskGetSystemState()
使用将任务的状态信息,写入到该数组中,形参 uxArraySize 指示该数组的大小,其中变量类型
TaskStatus_t 的定义如下所示:
typedef struct xTASK_STATUS
{TaskHandle_t xHandle; /* 任务句柄 */const char * pcTaskName; /* 任务名 */UBaseType_t xTaskNumber; /* 任务编号 */eTaskState eCurrentState; /* 任务状态 */UBaseType_t uxCurrentPriority; /* 任务优先级 */UBaseType_t uxBasePriority; /* 任务原始优先级 */configRUN_TIME_COUNTER_TYPE ulRunTimeCounter; /* 任务被分配的运行时间 */StackType_t * pxStackBase; /* 任务栈的基地址 */configSTACK_DEPTH_TYPE usStackHighWaterMark; /* 任务栈历史剩余最小值 */
} TaskStatus_t;
该结构体变量就包含了任务的一些状态信息,获取到的每个任务都有与之对应的
TaskStatus_t 结构体来保存该任务的状态信息。
4. 函数 vTaskGetInfo()
此函数用于获取指定任务的任务信息,若使用此函数,需在 FreeRTOSConfig.h 文件中设置
配置项 configUSE_TRACE_FACILITY 为 1,此函数的函数原型如下所示:
void vTaskGetInfo(TaskHandle_t xTask,TaskStatus_t * pxTaskStatus,BaseType_t xGetFreeStackSpace,eTaskState eState);
函数 vTaskGetInfo()的形参描述,如下表所示:
函数 vTaskGetInfo()的形参 eState 用来表示任务的状态,其变量类型为 eTaskState,变量类
型 eTaskState 的定义如下所示:
typedef enum
{eRunning = 0, /* 运行态 */eReady, /* 就绪态 */eBlocked, /* 阻塞态 */eSuspended, /* 挂起态 */eDeleted, /* 任务被删除 */eInvalid /* 非法值 */
} eTaskState;
形参 eState 用于决定形参 pxTaskStatus 结构体中成员变量 eCurrentState 的值,表示任务的
状态,如果传入的 eState 为 eInvalid,那么 eCurrentState 为任务当前的状态,否则 eCurrentState
为 eState。
5. 函数 xTaskGetApplicationTaskTag()
此函数用于获取指定任务的 Tag,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配置
项 configUSE_APPLICATION_TASK_TAG 为 1,此函数的函数原型如下所示:
TaskHookFunction_t xTaskGetApplicationTaskTag(TaskHandle_t xTask);
6. 函数 xTaskGetCurrentHandle()
此函数用于获取当前 系统正在运行的 任务的任务句柄, 若使用此函数,需 在
FreeRTOSConfig.h 文件中设置配置项 INCLUDE_xTaskGetCurrentTaskHandle 为 1,此函数的函
数原型如下所示:
TaskHandle_t xTaskGetCurrentTaskHandle(void);
函数 xTaskGetCurrentTaskHandle()无形参。
函数 xTaskGetCurrentTaskHandle()的返回值,如下表所示:
7. 函数 xTaskGetHandle()
此函数用于通过任务名获取任务句柄,若使用此函数,需在 FreeRTOSConfig.h 文件中设置
配置项 INCLUDE_xTaskGetHandle 为 1,此函数的函数原型如下所示:
TaskHandle_t xTaskGetHandle(const char * pcNameToQuery);
8. 函数 xTaskGetIdleTaskHandle()
此函数用于获取空闲任务的任务句柄,若使用此函数,需在 FreeRTOSConfig.h 文件中设置
配置项 INCLUDE_xTaskGetIdleTaskHandle 为 1,此函数的函数原型如下所示:
TaskHandle_t xTaskGetIdleTaskHandle(void);
函数 xTaskGetIdleTaskHandle()无形参。
函数 xTaskGetIdleTaskHandle()的返回值,如下表所示:
9. 函数 uxTaskGetStackHighWaterMark()
此函数用于获取指定任务 的 任务栈的历史剩余最小值, 若 使用此函数 , 需 在
FreeRTOSConfig.h 文件中设置配置项 INCLUDE_uxTaskGetStackHighWaterMark 为 1,此函数的
函数原型如下所示:
UBaseType_t uxTaskGetStackHighWaterMark(TaskHandle_t xTask);
10. 函数 eTaskGetState()
此函数用于获取指定任务的状态,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配置
项 INCLUDE_eTaskGetState 为 1,此函数的函数原型如下所示:
eTaskState eTaskGetState(TaskHandle_t xTask);
函数 eTaskGetState()的返回值,如下表所示:
11. 函数 pcTaskGetName()
此函数用于获取指定任务的任务名,此函数的函数原型如下所示:
char * pcTaskGetName(TaskHandle_t xTaskToQuery);
函数 pcTaskGetName()的形参描述,如下表所示:
12. 函数 xTaskGetTickCount()
此函数用于获取系统时钟节拍计数器的值,此函数的函数原型如下所示:
volatile TickType_t xTaskGetTickCount(void);
函数 xTaskGetTickCount()无形参。
函数 xTaskGetTickCount()的返回值,如下表所示
13. 函数 xTaskGetTickCountFromISR()
此函数用于在中断中获取系统时钟节拍计数器的值,此函数的函数原型如下所示:
volatile TickType_t xTaskGetTickCountFromISR(void);
函数 xTaskGetTickCountFromISR()无形参。
函数 xTaskGetTickCountFromISR()的返回值,如下表所示:
14. 函数 xTaskGetSchedulerState()
此函数用于获取任务调度器的运行状态,此函数的函数原型如下所示:
BaseType_t xTaskGetSchedulerState(void);
函数 xTaskGetSchedulerState()无形参。
函数 xTaskGetSchedulerState()的返回值,如下表所示:
15. 函数 uxTaskGetNumberOfTasks()
此函数用于获取系统中任务的数量,此函数的函数原型如下所示:
UBaseType_t uxTaskGetNumberOfTasks(void);
函数 uxTaskGetNumberOfTasks()无形参。
函数 uxTaskGetNumberOfTasks()的返回值,如下表所示:
16. 函数 vTaskList()
此函数用于以“表格”的形式获取系统中任务的信息,若使用此函数,需在 FreeRTOSConfig.h
文 件 中 同 时 设 置 配 置 项 configUSE_TRACE_FACILITY 和配置项
configUSE_STATS_FORMATTING_FUNCTIONS 为 1,此函数的函数原型如下所示:
void vTaskList(char * pcWriteBuffer);
函数 vTaskList()的形参描述,如下表所示:
17. 函数 vTaskGetRunTimeStats()
此函数用于获取指定任务的运行时间、运行状态等信息,若使用此函数,需在
FreeRTOSConfig.h 文 件 中 同 时 设 置 配 置 项 configGENERATE_RUN_TIME_STAT 、
configUSE_STATS_FORMATTING_FUNCTIONS、configSUPPORT_DYNAMIC_ALLOCATION
为 1,此函数的函数原型如下所示:
void vTaskGetRunTimeStats(char * pcWriteBuffer);
函数 vTaskGetRunTimeState()的形参描述,如下表所示:
18. 函数 vTaskSetApplicationTaskTag()
此函数用于设置指定任务的 Tag,若使用此函数,需在 FreeRTOSConfig.h 文件中设置配置
项 configUSE_APPLICATION_TASK_TAG 为 1,此函数的函数原型如下所示:
void vTaskSetApplicationTaskTag(TaskHandle_t xTask,TaskHookFunction_t pxTagValue);
函数 vTaskSetApplicationTaskTag()的形参描述,如下表所示:
19. 函数 SetThreadLocalStoragePointer()
此函数用于设置指定任务的独有数据数组指针,此函数的函数原型如下所示:
void vTaskSetThreadLocalStoragePointer(TaskHandle_t xTaskToSet,BaseType_t xIndex,void * pvValue)
函数 SetThreadLocalStoragePointer()的形参描述,如下表所示:
20. 函数 GetThreadLocalStoragePointer()
此函数用于获取指定任务的独有数据数组指针,此函数的函数原型如下所示:
void *pvTaskGetThreadLocalStoragePointer(TaskHandle_t xTaskToQuery,BaseType_t xIndex);
函数 GetThreadLocalStoragePointer()的形参描述,如下表所示:
三、相关实验