11-FreeRTOS任务相关的其他API函数

发布于:2025-09-09 ⋅ 阅读:(17) ⋅ 点赞:(0)

数据来源地址:gitee.com

FreeRTOS任务相关的其他API函数


一、FreeRTOS任务相关的其他API函数介绍

1、FreeRTOS任务相关API函数介绍(部分常用的)

答:

在这里插入图片描述


二、任务状态查询API函数

1、获取任务优先级函数

答:

UBaseType_t  uxTaskPriorityGet(  const TaskHandle_t xTask  )

此函数用于获取指定任务的任务优先级,使用该函数需要将宏 INCLUDE_uxTaskPriorityGet 置1。

函数参数:

在这里插入图片描述

函数返回值:

在这里插入图片描述

2、修改任务优先级函数

答:

void vTaskPrioritySet( TaskHandle_t xTask , UBaseType_t uxNewPriority )

此函数用于改变某个任务的任务优先级,使用该函数需将宏 INCLUDE_vTaskPrioritySet 为 1 。

函数参数:

在这里插入图片描述

3、获取系统任务数量函数

答:

UBaseType_t   uxTaskGetNumberOfTasks( void )

此函数用于获取系统中任务的任务数量。

函数返回值:

在这里插入图片描述

4、获取系统中所有任务状态信息函数

答:

UBaseType_t   uxTaskGetSystemState(   TaskStatus_t * const pxTaskStatusArray,
                                      const UBaseType_t uxArraySize,
                                      configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime   )

此函数用于获取系统中所有任务的任务状态信息,使用该函数需将宏 configUSE_TRACE_FACILITY 置 1。

函数参数:

在这里插入图片描述

函数返回值:

在这里插入图片描述

参数成员pxTaskStatusArray的结构体:

typedef struct xTASK_STATUS
{
    TaskHandle_t                   xHandle;                     /* 任务句柄 */ 
    const char *                   pcTaskName;                  /* 任务名 */
    UBaseType_t                    xTaskNumber;                 /* 任务编号 */
    eTaskStatee                    CurrentState;                /* 任务状态 */
    UBaseType_t                    uxCurrentPriority;           /* 任务优先级 */
    UBaseType_t                    uxBasePriority;              /* 任务原始优先级*/
    configRUN_TIME_COUNTER_TYPE    ulRunTimeCounter;            /* 任务运行时间*/
    StackType_t *                  pxStackBase;                 /* 任务栈基地址 */
    configSTACK_DEPTH_TYPE         usStackHighWaterMark;        /* 任务栈历史剩余最小值 */
} TaskStatus_t;

5、获取系统中单个任务状态信息函数

答:

void vTaskGetInfo(  TaskHandle_t     xTask,
                    TaskStatus_t *   pxTaskStatus,
                    BaseType_t       xGetFreeStackSpace,
                    eTaskState       eState  )  

此函数用于获取指定的单个任务的状态信息,使用该函数需将宏 configUSE_TRACE_FACILITY 置 1

函数参数:

在这里插入图片描述

参数成员eState的结构体:

typedef enum
{
    eRunning = 0,       /* 运行态 */
    eReady,             /* 就绪态 */
    eBlocked,           /* 阻塞态 */
    eSuspended,         /* 挂起态 */
    eDeleted,           /* 任务被删除 */
    eInvalid            /* 无效 */ 
} eTaskState;

6、获取当前任务的任务句柄函数

答:

TaskHandle_t    xTaskGetCurrentTaskHandle( void )

此函数用于获取当前任务的任务句柄, 使用该函数需将宏 INCLUDE_xTaskGetCurrentTaskHandle 置 1。

函数返回值:

在这里插入图片描述

7、通过任务名获取任务句柄函数

答:

TaskHandle_t xTaskGetHandle(const char * pcNameToQuery); 

此函数用于通过任务名获取任务句柄 , 使用该函数需将宏 INCLUDE_xTaskGetHandle 置 1。

函数参数:

在这里插入图片描述

函数返回值:
在这里插入图片描述

8、获取指定任务的任务堆栈历史最小剩余函数

UBaseType_t    uxTaskGetStackHighWaterMark( TaskHandle_t  xTask )

此函数用于获取指定任务的任务栈历史最小剩余堆栈;使用该函数需将宏 INCLUDE_uxTaskGetStackHighWaterMark 置 1。

函数参数:

在这里插入图片描述
函数返回值:

在这里插入图片描述

9、查询指定任务运行状态函数

答:

eTaskState    eTaskGetState(TaskHandle_t xTask)

此函数用于查询某个任务的运行状态,使用此函数需将宏 INCLUDE_eTaskGetState 置1

函数参数:

在这里插入图片描述
函数返回值:

在这里插入图片描述

参数成员xTask的结构体:

typedef enum
{
    eRunning = 0,	/* 运行态 */
    eReady,         /* 就绪态 */
    eBlocked,       /* 阻塞态 */
    eSuspended,     /* 挂起态 */
    eDeleted,       /* 任务被删除 */
    eInvalid        /* 无效 */ 
} eTaskState;

10、以“表格”的形式获取系统中任务信息函数

答:

void   vTaskList(char * pcWriteBuffer)

此函数用于以“表格”的形式获取系统中任务的信息 ;

使用此函数需将宏 configUSE_TRACE_FACILITY 和configUSE_STATS_FORMATTING_FUNCTIONS 置1 。

函数参数:

在这里插入图片描述

表格内容:

在这里插入图片描述

  • Name:创建任务的时候给任务分配的名字。
  • State:任务的壮态信息, B 是阻塞态, R 是就绪态, S 是挂起态, D 是删除态。
  • Priority:任务优先级。
  • Stack: 任务堆栈的“高水位线”,就是堆栈历史最小剩余大小。
  • Num:任务编号,这个编号是唯一的,当多个任务使用同一个任务名的时候可以通过此编号来做区分。

三、任务时间统计API函数

1、任务时间统计函数

答:

void    vTaskGetRunTimeStats( char * pcWriteBuffer ) 

此函数用于统计任务的运行时间信息,使用此函数需将宏 configGENERATE_RUN_TIME_STAT 、configUSE_STATS_FORMATTING_FUNCTIONS 置1。

函数参数:

在这里插入图片描述

时间统计表格:
在这里插入图片描述

  • Task:任务名称。
  • Abs Time:任务实际运行的总时间(绝对时间)。
  • %Time:占总处理时间的百分比。

2、时间统计API函数使用流程

答:

1.将宏 configGENERATE_RUN_TIME_STATS 置1 。

2.将宏 configUSE_STATS_FORMATTING_FUNCTIONS 置1 。

3.当将此宏 configGENERATE_RUN_TIME_STAT 置1之后,还需要实现2个宏定义:

1)portCONFIGURE_TIMER_FOR_RUNTIME_STATE() :用于初始化用于配置任务运行时间统计的时基定时器;

注意:这个时基定时器的计时精度需高于系统时钟节拍精度的10至100倍!

2)portGET_RUN_TIME_COUNTER_VALUE():用于获取该功能时基硬件定时器计数的计数值 。



网站公告

今日签到

点亮在社区的每一天
去签到