FreeRTOS-任务查询及延时函数

FreeRTOS-任务查询及延时函数

  • 下面是一些FreeRTOS任务状态查询及运行时间统计的API函数
uxTaskPriorityGet();			//获取任务优先级
vTaskPrioritySet();				//设置任务优先级
uxTaskGetNumberOfTasks();		//获取系统中任务的数量
uxTaskGetSystemState();			//获取所有任务状态信息
vTaskGetInfo();					//获取指定单个的任务信息
xTaskGetCurrentTaskHandle();	//获取当前任务的任务句柄
xTaskGetHandle();				//根据任务名获取该任务的任务句柄
uxTaskGetStackHighWaterMark();	//获取任务的任务栈历史剩余最小值
eTaskGetState();				//获取任务状态
vTaskList();					//以表格形式获取所有任务的信息
vTaskGetRunTimeStats();			//获取任务的运行时间
  • 获取任务优先级
#define INCLUDE_uxTaskPriorityGet		1//宏置1
UBaseType_t uxTaskPriorityGet(const TaskHandle_t xTask);			//获取任务优先级  形参:任务句柄 NULL表示自身	返回值:整数 任务优先级数值
  • 设置任务优先级
#define INCLUDE_vTaskPrioritySet		1//宏置1
void vTaskPrioritySet(TaskHandle_t xTask,UBaseType_t uxNewPriority);			//设置任务优先级  形参:任务句柄 NULL表示自身	 需要设置的任务优先级
  • 获取系统任务数量
UBaseType_t uxTaskGetNumberOfTasks();		//获取系统中任务的数量
//返回值 系统中任务的的数量
  • 获取所有任务信息
UBaseType_t uxTaskGetSystemState(TaskStatus_t* const pxTaskStatusArray,
								const UBaseType_t uxArraySize,
								configRUN_TIME_COUNTER_TYPE*const pulTotalRunTime);			//获取所有任务状态信息
//形参:指向TaskStatus_t结构体数组首地址  接收信息的数组大小  系统运行总时间
//返回值:获取信息的任务数量
  • 获取单个任务的状态信息
#define configUSE_TRACE_FACILITY		1//宏置1
void vTaskGetInfo(TaskHandle_t xTask,
				TaskStatus_t* pxTaskStatus,
				BaseType_t	xGetFreeStackSpace,
				eTaskState eState);					//获取指定单个的任务信息
//形参:指定获取信息的任务句柄	接收任务信息的变量		任务栈历史剩余最小值		任务状态
  • 获取当前任务的任务句柄
#define INCLUDE_xTaskGetCurrentTaskHandle  1//宏置1
TaskHandle_t xTaskGetCurrentTaskHandle()//获取当前任务句柄
//返回值:当前任务句柄
  • 根据任务名获取该任务的任务句柄
#define INCLUDE_xTaskGetHandle  1//宏置1
TaskHandle_t xTaskGetHandle(const char* pcNameToQuery);				//根据任务名获取该任务的任务句柄
//形参:任务名  返回值:任务句柄
  • 获取任务的任务栈历史剩余最小值
  • 当你获取到剩余最小值很小时,说明快要溢出,需要加大
#define INCLUDE_uxTaskGetStackHighWaterMark  1//宏置1
UBaseType_t uxTaskGetStackHighWaterMark(TaskHandle_t xTask);	//获取任务的任务栈历史剩余最小值
//形参:任务句柄		返回值:任务栈的历史剩余最小值
  • 获取任务运行状态
  • 任务状态:0表示运行态
#define INCLUDE_eTaskGetState		1//宏置1
eTaskState eTaskGetState(TaskHandle_t xTask)//获取任务运行状态
//形参:任务句柄		返回值:任务状态
  • 以表格形式获取任务状态信息
  • 主要获取的内容有:Name(任务名)、State(任务状态信息BRSD)、Priority(任务优先级)、Stack(堆栈历史最小剩余大小)、Num(任务编号)
#define configUSE_TRACE_FACILITY 1;
#define config_STATS_FORMATTING_FUNCTIONS	1;//宏置1
void vTaskList(char* pcWriteBuffer);					//以表格形式获取所有任务的信息
//形参:接收任务的缓存指针
  • 统计任务运行时间
  • 会获取到任务的Task(任务名称)、Abs Time(任务实际运行的总时间)、%Time(占总时间的百分比)
#define configGENERATE_RUN_TIME_STAT 1;
#define portCONFIGURE_TIMER_FOR_RUNTIME_STATE()		function;//初始化时基定时器,其精度需要高于系统时钟节拍的10-100倍
#define portGET_RUN_TIME_COUNTER_VALUE()		function//用于获取该功能时基硬件定时器计数的计数值
#define configUSE_STATS_FORMATTING_FUNCTIONS 1;//宏置1
void vTaskGetRunTimeStats(char* pcWriteBuffer);			//获取任务的运行时间
//形参:缓存指针
  • 在FreeRTOS中存在两个延时函数
vTaskDelay();//相对延时:每次延时都是从执行函数vTaskDelay()开始,进入阻塞态,直到延时指定的时间结束
xTaskDelayUntil();//绝对延时:将整个任务的运行周期看成一个整体,适用于需要按照一定比例频率运行的任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值