FreeRTOS学习 -- 任务 API 函数

函数 uxTaskPriorityGet()

此函数用来查询指定任务的优先级,要使用此函数的话宏 INCLUDE_uxTaskPriorityGet 应该定义为 1。

函数 vTaskPrioritySet()

此函数用于改变某一个任务的任务优先级,要 使 用 此 函 数 的 话 宏
INCLUDE_vTaskPrioritySet 应该定义为 1。

函数uxTaskGetSystemState()

此函数用于获取系统重所有任务的任务状态,每个任务的壮态信息保存在一个 TaskStatus_t类型的结构体里面,这个结构体里面包含了任务的任务句柄、任务名字、堆栈、优先级等信息,要使用此函数的话宏 configUSE_TRACE_FACILITY 应该定义为 1。

函数 vTaskGetInfo()

此寒素也用来获取任务状态信息,但是是获取指定的单个任务的状态的,任务状态信息填充到参数 pxTaskStatus 中, 这个参数也是 TaskStatus_t 类型的。
要使用此函数的话宏 configUSE_TRACE_FACILITY 要定义为 1。

函数 xTaskGetApplicationTaskTag()

此函数用于获取任务的 Tag(标签)值,任务控制块中有个成员变量 pxTaskTag 来保存任务的标签值。标签的功能由用户自行决定,此函数就是用来获取这个标签值的, FreeRTOS 系统内核是不会使用这个标签的。
要使用此函数的话宏 configUSE_APPLICATION_TASK_TAG 必须为 1。

函数 xTaskGetCurrentTaskHandle()

此函数用于获取当前任务的任务句柄。如果要使用此函数的话宏 INCLUDE_xTaskGetCurrentTaskHandle 应该为 1。

函数 xTaskGetHandle()

此函数根据任务名字获取任务的任务句柄,在使用函数 xTaskCreate()或 xTaskCreateStatic()创建任务的时候都会给任务分配一个任务名,函数 xTaskGetHandle()就是使用这个任务名字来查询其对应的任务句柄的。要使用此函数的话宏 INCLUDE_xTaskGetHandle 应该设置为 1。

函数 xTaskGetIdleTaskHandle()

此函数用于返回空闲任务的任务句柄。
要使用此函数的话宏 INCLUDE_xTaskGetIdleTaskHandle 必须为 1。

函数 uxTaskGetStackHighWaterMark() (重要)

每个任务都有自己的堆栈,堆栈的总大小在创建任务的时候就确定了。
此函数用于检查任务从创建好到现在的历史剩余最小值,这个值越小说明任务堆栈溢出的可能性就越大。FreeRTOS 把这个历史剩余最小值叫做“高水位线”。
此函数相对来说会多耗费一点时间,所以在代码调试阶段可以使用,产品发布的时候最好不要使用。要使用此函数的话宏 INCLUDE_uxTaskGetStackHighWaterMark 必须为 1。

函数 eTaskGetState()

此函数用于查询某个任务的运行状态,比如:运行态、阻塞态、挂起态、就绪态,返回值是个枚举类型。
要使用此函数的话宏 INCLUDE_eTaskGetState 必须为 1。

函数 pcTaskGetName()

根据某个任务的任务句柄来查询这个任务对应的任务名。

函数 xTaskGetTickCount()

此函数用于查询任务调度器从启动到现在时间计数器 xTickCount 的值。
xTickCount 是系统的时钟节拍值,并不是真实的时间值。每个滴答定时器中断 xTickCount 就会加 1,一秒钟滴答定时器中断多少次取决于宏 configTICK_RATE_HZ。

函数 xTaskGetTickCountFromISR()

此函数是 xTaskGetTickCount()的中断级版本,用于在中断服务函数中获取时间计数器 xTickCount 的值。

函数 xTaskGetSchedulerState()

此函数用于获取 FreeRTOS 的任务 调度器运行情况:运行、关闭、还是挂起。
要使用此函数的话宏 INCLUDE_xTaskGetSchedulerState 必须为 1。

函数 uxTaskGetNumberOfTasks()

此函数用于查询系统当前存在的任务数量。

函数 vTaskList()

此函数会创建一个表格来描述每个任务的详细信息。

函数 vTaskGetRunTimeStats() (重要)

FreeRTOS 可以通过相关的配置来统计任务的运行时间信息,任务的运行时间信息提供了每个任务获取到 CPU 使用权总的时间。

要 使 用 此 函 数 的 话 宏 configGENERATE_RUN_TIME_STATS 和configUSE_STATS_FORMATTING_FUNCTIONS 必须都为 1。

如果宏 configGENERATE_RUN_TIME_STATS 为 1 的话还需要实现一下几个宏定义:
●portCONFIGURE_TIMER_FOR_RUN_TIME_STATS(),此宏用来初始化一个外设来提供时间统计功能所需的时基,一般是定时器/计数器。这个时基的分辨率一定要比 FreeRTOS的系统时钟高,一般这个时基的时钟精度比系统时钟的高 10~20 倍就可以了。
●portGET_RUN_TIME_COUNTER_VALUE()或者
portALT_GET_RUN_TIME_COUNTER_VALUE(Time),这两个宏实现其中一个就行了,这两个宏用于提供当前的时基的时间值。

函数 vTaskSetApplicationTaskTag()

此函数是为高级用户准备的,此函数用于设置某个任务的标签值,这个标签值的具体函数和用法由用户自行决定,FreeRTOS 内核不会使用这个标签值,如果要使用此函数的话宏 configUSE_APPLICATION_TASK_TAG 必须为 1。

函数 SetThreadLocalStoragePointer()

此函数用于设置线程本地存储指针的值,每个任务都有它自己的指针数组来作为线程本地存储,使用这些线程本地存储可以用来在任务控制块中存储一些应用信息,这些信息只属于任务自己的。线程本地存储指针数组的大小由宏configNUM_THREAD_LOCAL_STORAGE_POINTERS 来决定的。如果要使用此函数的话宏 configNUM_THREAD_LOCAL_STORAGE_POINTERS 不能为 0。

函数 GetThreadLocalStoragePointer()

此函数用于获取线程本地存储指针的值, 如 果 要 使 用 此 函 数 的 话 宏
configNUM_THREAD_LOCAL_STORAGE_POINTERS 不能为 0。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聚优致成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值