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),这两个宏实现其中一个就行了,这两个宏用于提供当前的时基的时间值。

相关推荐

  1. FreeRTOS学习 -- 任务 API 函数

    2024-05-26 00:18:13       12 阅读
  2. FreeRTOS任务调度机制学习

    2024-05-26 00:18:13       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-26 00:18:13       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-26 00:18:13       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-26 00:18:13       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-26 00:18:13       20 阅读

热门阅读

  1. SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】

    2024-05-26 00:18:13       10 阅读
  2. android ndc firewall 命令type 黑名单 白名单差异

    2024-05-26 00:18:13       10 阅读
  3. 29.修改idea中git的提交记录上的提交名

    2024-05-26 00:18:13       11 阅读
  4. 说些什么好呢

    2024-05-26 00:18:13       12 阅读
  5. 时政|医疗结果互认

    2024-05-26 00:18:13       9 阅读
  6. 支付宝直付通如何申请?

    2024-05-26 00:18:13       12 阅读