FreeRTOS任务相关API函数
一、FreeRTOS任务相关API函数介绍
任务相关的API主要如下:
函数 | 描述 |
uxTaskPriorityGet() | 获取任务优先级 |
vTaskPrioritySet() | 设置任务优先级 |
uxTaskGetNumberOfTasks() | 获取系统中任务的数量 |
uxTaskGetSystemState() | 获取所有任务状态信息 |
vTaskGetInfo() | 获取指定单个的任务信息 |
xTaskGetCurrentTaskHandle() | 获取当前任务的任务句柄 |
xTaskGetHandle() | 根据任务名获取该任务的任务句柄 |
uxTaskGetStackHighWaterMark() | 获取任务的任务栈历史剩余最小值 |
eTaskGetState() | 获取任务状态 |
vTaskList() | 以“表格”形式获取所有任务的信息 |
vTaskGetRunTimeStats() | 获取任务的运行时间 |
官网:任务实用程序 - FreeRTOS™
二、任务状态查询API函数实验
1、实验目标
学会使用 FreeRTOS 任务状态查询相关 API 函数:
- start_task:用来创建其他的2个任务。
- task1:LED1每500ms闪烁一次,提示程序正在运行。
- task2:用于展示任务状态查询相关API函数的使用。
2、FreeRTOSConfig.h代码清单
#defineINCLUDE_xTaskGetSchedulerState1
#defineconfigUSE_TRACE_FACILITY1
#defineconfigUSE_STATS_FORMATTING_FUNCTIONS1
#defineINCLUDE_xTaskGetHandle1
#defineINCLUDE_uxTaskGetStackHighWaterMark1
#defineINCLUDE_eTaskGetState1
3、freertos_demo.c代码
实验结果:
三、任务时间统计API函数实验
1、实验目标
学会使用 FreeRTOS 任务运行时间统计相关 API 函数:
- start_task:用来创建其他的2个任务。
- task1:LED1每500ms闪烁一次,提示程序正在运行。
- task2:用于展示任务运行时间统计相关API函数的使用。
2、函数解析
由官网给出的使用说明可知,需要重新配置一个定时器,且频率应为systick定时器的10倍
3、STM32CubeMX配置
4、FreeRTOSConfig.h代码
/*运行时间和任务状态统计相关定义*/
#defineconfigGENERATE_RUN_TIME_STATS1/* 1:使能任务运行时间统计功能,默认: 0 */
#ifconfigGENERATE_RUN_TIME_STATS
externvolatileunsignedlongulHighFrequencyTimerTicks;
#defineportCONFIGURE_TIMER_FOR_RUN_TIME_STATS() (ulHighFrequencyTimerTicks=0UL)
#defineportGET_RUN_TIME_COUNTER_VALUE()ulHighFrequencyTimerTicks
#endif
#defineconfigUSE_TRACE_FACILITY1
#defineconfigUSE_STATS_FORMATTING_FUNCTIONS1
