网站更换空间对优化的影响,网站开发 模块化,网站建设蓝色工匠,app和网站1.函数总览
序号函数描述1uxTaskPriorityGet()获取任务优先级2vTaskPrioritySet()设置任务优先级3uxTaskGetNumberOfTasks()获取系统中任务的数量4uxTaskGetSystemState()获取所有任务的状态信息5vTaskGetInfo()获取单个任务的状态信息6xTaskGetCurrentTaskHandle()获取当前任…1.函数总览
序号函数描述1uxTaskPriorityGet()获取任务优先级2vTaskPrioritySet()设置任务优先级3uxTaskGetNumberOfTasks()获取系统中任务的数量4uxTaskGetSystemState()获取所有任务的状态信息5vTaskGetInfo()获取单个任务的状态信息6xTaskGetCurrentTaskHandle()获取当前任务的任务句柄7xTaskGetHandle()获取指定任务的任务句柄8uxTaskGetStackHighWaterMark()获取任务的任务栈历史剩余最小值9eTaskGetState()获取任务状态10vTaskList()以“表格”形式获取所有任务的信息11vTaskGetRunTimeStats()获取任务的运行时间等信息12xTaskGetApplicationTaskTag()获取任务Tag13vTaskSetApplicationTaskTag()设置任务Tag14pcTaskGetName()获取任务名15xTaskGetSchedulerState()获取任务调度器状态16xTaskGetIdleTaskHandle()获取空闲任务的任务句柄17xTaskGetTickCount()获取系统时钟节拍计数器的值18xTaskGetTickCountFromISR()中断中获取系统使用节拍计数器的值19GetThreadLocalStoragePointer()获取任务的独有数据记录数组指针20setThreadLocalStoragePointer()设置任务的独有数据记录数组指针
这些API函数主要用于程序调试阶段查看任务运行状态以及统计任务时间占比空 闲任务占比越大代表应用程序压力越小 【本文只阐述一些比较重要的API其他API可以查阅FreeRTOS官网】
2.重点函数介绍
2.1获取任务优先级
UBaseType_t uxTaskPriorityGet(const TaskHandle_t xTask)此函数用于获取指定任务的任务优先级使用该函数需将宏 INCLUDE_uxTaskPriorityGet置1形参xTask要查找的任务句柄NULL代表任务自身返回值整数任务优先级数值
2.2.设置任务优先级
void vTaskPrioritySet(TaskHandle_t xTask, UBaseType_t uxNewPriority )此函数用于改变某个任务的任务优先级使用该函数需将宏 INCLUDE_vTaskPrioritySet置1形参xTask任务句柄NULL代表任务自身uxNewPriority需要设置的任务优先级
2.3.获取系统中任务数量
UBaseType_t uxTaskGetNumberOfTasks(void)此函数用于获取系统中任务的任务数量返回值整型系统中任务的数量
2.4.获取所有任务的状态信息
UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,const UBaseType_t uxArraySize,configRUN_TIME_COUNTER_TYPE* const pulTotalRunTime)
typedef struct xTASK_STATUS
{TaskHandle_t xHandle; /* 任务句柄 */ const char * pcTaskName; /* 任务名 */ UBaseType_t xTaskNumber; /* 任务编号 */ eTaskState e CurrentState; /* 任务状态 */ UBaseType_t uxCurrentPriority; /* 任务优先级 */ UBaseType_t uxBasePriority; /* 任务原始优先级*/ configRUN_TIME_COUNTER_TYPE ulRunTimeCounter; /* 任务运行时间*/StackType_t * pxStackBase; /* 任务栈基地址 */ configSTACK_DEPTH_TYPE usStackHighWaterMark; /* 任务栈历史剩余最小值 */
} TaskStatus_t;此函数用于获取系统中所有任务的任务状态信息使用该函数需将宏configUSE_TRACE_FACILITY置1形参xTaskStatusArray指向TaskStatus_t 结构体数组首地址一般要自行分配形参uxArraySize接收信息的数组大小一般为任务数量形参pulTotalRunTime系统总运行时间为NULL 则省略总运行时间值一般为NULL返回值整型获取信息的任务数量
2.5.获取单个任务的状态信息
void vTaskGetInfo( TaskHandle_t xTask, TaskStatus_t* pxTaskStatus, BaseType_t xGetFreeStackSpace,eTaskState eState)
typedef enum
{ eRunning 0, /* 运行态 */ eReady /* 就绪态 */ eBlocked, /* 阻塞态 */ eSuspended, /* 挂起态 */ eDeleted, /* 任务被删除 */ eInvalid /* 无效 */
} eTaskState;此函数用于获取指定的单个任务的状态信息使用该函数需将宏configUSE_TRACE_FACILITY置1形参xTask指定获取信息的任务的句柄形参pxTaskStatus接收任务信息的变量形参xGetFreeStackSpace任务栈历史剩余最小值当为pdFALSE跳过这个步骤当为pdTRUE检查历史剩余最小堆栈形参eState任务状态可直接赋值如想获取代入“eInvalid”
2.6.获取当前任务的任务句柄
TaskHandle_t xTaskGetCurrentTaskHandle(void) 此函数用于获取当前任务的任务句柄使用该函数需将宏 INCLUDE_xTaskGetCurrentTaskHandle置1返回值TaskHandle_t 当前任务的任务句柄
2.7.获取指定任务的任务句柄
TaskHandle_t xTaskGetHandle(const char* pcNameToQuery); 此函数用于通过任务名获取任务句柄使用该函数需将宏 INCLUDE_xTaskGetHandle置1形参pcNameToQuery任务名返回值TaskHandle任务句柄
2.8.获取任务的任务栈历史剩余最小值
UBaseType_t uxTaskGetStackHighWaterMark(TaskHandle_t xTask)此函数用于获取指定任务的任务栈历史最小剩余堆栈使用该函数需将宏 INCLUDE_uxTaskGetStackHighWaterMark置1形参xTask任务句柄返回值UBaseType_t任务栈的历史剩余最小值
2.9.获取任务状态
eTaskState eTaskGetState(TaskHandle_t xTask)
typedef enum
{ eRunning 0, /* 运行态 */ eReady /* 就绪态 */ eBlocked, /* 阻塞态 */ eSuspended, /* 挂起态 */ eDeleted, /* 任务被删除 */ eInvalid /* 无效 */
} eTaskState;此函数用于查询某个任务的运行状态使用此函数需将宏 INCLUDE_eTaskGetState置1形参xTask待获取状态任务的任务句柄返回值eTaskState任务状态
2.10.以“表格”形式获取所有任务的信息类似于2.4获取所有任务的状态信息
void vTaskList(char* pcWriteBuffer)此函数用于以“表格”的形式获取系统中任务的信息使用此函数需将宏 configUSE_TRACE_FACILITY、configUSE_STATS_FORMATTING_FUNCTIONS 置1形参pcWriteBuffer接收任务信息的缓存指针
Name 创建任务的时候给任务分配的名字。 State 任务的壮态信息X是运行态B是阻塞态 R是就绪态S是挂起态 D是删除态 Priority 任务优先级。 Stack 任务堆栈的“高水位线”就是堆栈历史最小剩余大小。 Num 任务编号这个编号是唯一的当多个任务使用同一个任务名的时候可以通过此编号来做区分。
2.11.获取任务的运行时间等信息
Void vTaskGetRunTimeStats(char * pcWriteBuffer)此函数用于统计任务的运行时间信息使用此函数需将宏 configGENERATE_RUN_TIME_STATSconfigUSE_STATS_FORMATTING_FUNCTIONS 置1形参pcWriteBuffer接收任务运行时间信息的缓存指针
Task任务名称 Abs Time任务实际运行的总时间绝对时间 % Time占总处理时间的百分比
时间统计API函数使用流程
将宏 configGENERATE_RUN_TIME_STATS 置1将宏 configUSE_STATS_FORMATTING_FUNCTIONS 置1当将此宏 configGENERATE_RUN_TIME_STATS 置1之后还需要实现2个宏定义 ① portCONFIGURE_TIMER_FOR_RUNTIME_STATE() 用于初始化用于配置任务运行时间统计的时基定时器该函数一般调用时基定时器的初始化配置时间精度这个时基定时器的计时精度需高于系统时钟节拍精度的10至100倍 ② portGET_RUN_TIME_COUNTER_VALUE()用于获取该功能时基硬件定时器计数的计数值一般在时基函数初始化时置0在定时器中断中自增