十二、FreeRTOS之FreeRTOS任务相关API函数

本节需要掌握以下内容:

1FreeRTOS任务相关API函数介绍(熟悉)

2,任务状态查询API函数实验(掌握)

3,任务时间统计API函数实验(掌握)

4,课堂总结(掌握)

一、FreeRTOS任务相关API函数介绍(熟悉)

函数

描述

uxTaskPriorityGet()

获取任务优先级

vTaskPrioritySet()

设置任务优先级

uxTaskGetNumberOfTasks()

获取系统中任务的数量

uxTaskGetSystemState()

获取所有任务状态信息

vTaskGetInfo()

获取指定单个的任务信息

xTaskGetCurrentTaskHandle()

获取当前任务的任务句柄

xTaskGetHandle()

根据任务名获取该任务的任务句柄

uxTaskGetStackHighWaterMark()

获取任务的任务栈历史剩余最小值

eTaskGetState()

获取任务状态

vTaskList()

以“表格”形式获取所有任务的信息

vTaskGetRunTimeStats()

获取任务的运行时间

学习资料可参考手册FreeRTOS开发指南11——FreeRTOS其他任务API函数”

 1.1 获取任务优先级函数

UBaseType_t  uxTaskPriorityGet(  const TaskHandle_t xTask  )

此函数用于获取指定任务的任务优先级,使用该函数需将宏 INCLUDE_uxTaskPriorityGet  

形参

描述

       xTask

要查找的任务句柄,NULL代表任务自身

返回值

描述

整数

任务优先级数值

 1.2 设置任务优先级函数

void vTaskPrioritySet( TaskHandle_t xTask , UBaseType_t uxNewPriority )

此函数用于改变某个任务的任务优先级,使用该函数需将宏 INCLUDE_vTaskPrioritySet  1

形参

描述

                     xTask

任务句柄,NULL代表任务自身

uxNewPriority

需要设置的任务优先级

 1.3 获取系统中任务的数量函数

UBaseType_t uxTaskGetNumberOfTasks( void )

此函数用于获取系统中任务的任务数量

返回值

描述

                      整型

系统中任务的数量         

 

1.4 获取所有任务状态信息

UBaseType_t  uxTaskGetSystemState(   TaskStatus_t * const pxTaskStatusArray,

                            const UBaseType_t uxArraySize,

                            configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime  )

 此函数用于获取系统中所有任务的任务状态信息,使用该函数需将宏 configUSE_TRACE_FACILITY 1

形参

描述

xTaskStatusArray

指向TaskStatus_t 结构体数组首地址

uxArraySize

接收信息的数组大小

pulTotalRunTime

系统总运行时间,为NULL 则省略总运行时间值

返回值

描述

             整型

获取信息的任务数量

 TaskStatus_t 类型定义如下:

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;

 1.5 获取指定单个的任务信息

void vTaskGetInfo(   TaskHandle_t   xTask,
                                 
TaskStatus_t *   pxTaskStatus,
                                 
BaseType_t   xGetFreeStackSpace,
                                 
eTaskState   eState  ) 

此函数用于获取指定的单个任务的状态信息,使用该函数需将宏 configUSE_TRACE_FACILITY  1

形参

描述

xTask

指定获取信息的任务的句柄

pxTaskStatus

接收任务信息的变量

xGetFreeStackSpace

任务栈历史剩余最小值,

当为“pdFALSE 则跳过这个步骤,

当为“pdTRUE”则检查历史剩余最小堆栈

eState

任务状态,可直接赋值,如想获取代入“eInvalid

eTaskState类型定义如下

1.6 获取当前任务的任务句柄

TaskHandle_t    xTaskGetCurrentTaskHandle( void )

返回值

描述

                      TaskHandle_t

当前任务的任务句柄

TaskHandle_t xTaskGetHandle(const char * pcNameToQuery);

1.7 根据任务名获取该任务的任务句柄

TaskHandle_t xTaskGetHandle(const char * pcNameToQuery)

此函数用于通过任务名获取任务句柄 , 使用该函数需将宏 INCLUDE_xTaskGetHandle 1

形参

描述

pcNameToQuery

                                             任务名

返回值

描述

    TaskHandle

                                 任务句柄

1.8 获取任务的任务栈历史剩余最小值

UBaseType_t    uxTaskGetStackHighWaterMark( TaskHandle_t  xTask )

此函数用于获取指定任务的任务栈历史最小剩余堆栈;

使用该函数需将宏 INCLUDE_uxTaskGetStackHighWaterMark 1

形参

描述

              xTask

                       任务句柄

返回值

描述

    UBaseType_t

                  任务栈的历史剩余最小值

1.9 获取任务状态

eTaskState    eTaskGetState(TaskHandle_t xTask)

此函数用于查询某个任务的运行状态,使用此函数需将宏 INCLUDE_eTaskGetState 1

形参

描述

              xTask

        待获取状态任务的任务句柄

返回值

描述

     eTaskState

                                任务状态

1.10 以“表格”形式获取所有任务的信息

 void   vTaskList(char * pcWriteBuffer)

此函数用于以“表格”的形式获取系统中任务的信息 ;

使用此函数需将宏 configUSE_TRACE_FACILITY configUSE_STATS_FORMATTING_FUNCTIONS 1

形参

描述

        pcWriteBuffer

        接收任务信息的缓存指针

表格如下所示:

 1.11  Void    vTaskGetRunTimeStats( char * pcWriteBuffer )

此函数用于统计任务的运行时间信息,使用此函数需将宏 configGENERATE_RUN_TIME_STAT configUSE_STATS_FORMATTING_FUNCTIONS 1

形参

描述

       pcWriteBuffer

             接收任务运行时间信息的缓存指针

 Task:任务名称

Abs Time:任务实际运行的总时间(绝对时间)

% Time:占总处理时间的百分比

 ,任务状态查询API函数实验(掌握)

三,任务时间统计API函数实验(掌握)

3.1、实验目的:

学习 FreeRTOS 任务运行时间统计相关 API 函数的使用

3.2、实验设计:

将设计三个任务:start_tasktask1task2

三个任务的功能如下:

  • start_task:用来创建task1task2任务
  • task1:LED0500ms闪烁一次,提示程序正在运行
  • task2:用于展示任务运行时间统计相关API函数的使用

3.3 时间统计API函数使用流程

1、将宏 configGENERATE_RUN_TIME_STATS 1

2、将宏 configUSE_STATS_FORMATTING_FUNCTIONS  1

3、当将此宏 configGENERATE_RUN_TIME_STAT  1之后,还需要实现2个宏定义:

portCONFIGURE_TIMER_FOR_RUNTIME_STATE() :用于初始化用于配置任务运行时间统计的时基定时器;

注意:这个时基定时器的计时精度需高于系统时钟节拍精度的10100

portGET_RUN_TIME_COUNTER_VALUE():用于获取该功能时基硬件定时器计数的计数值 。

3.4 实验代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/219423.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【鸿蒙应用开发】开发环境搭建及IDE安装使用

1.下载安装包 安装包下载地址: 点击跳转下载页面 可以根据自己的操作系统选择对应版本下载。 本文以Windows安装为例,Mac安装方式相同 2. 安装 下载好后,打开安装包,进入安装界面: 点击Next,进入安…

vue创建项目,使用可视化界面安装插件

安装项目: vue create vue-app 选择默认配置就行,也可以按需选择自定义配置 vue ui通过可视化管理项目 通过可视化安装全家桶插件

Spring Cloud 配置 Druid(二)

不废话,直接上代码, Nacos搭建的微服务,可以看Spring Cloud 配置 Nacos(一)-CSDN博客 一,pom文件 spring-cloud-starter-alibaba-nacos-discovery 和 spring-cloud-starter-openfeign 都是基于spring-cl…

95所双一流高校参与,“搜索界奥林匹克”决出28个获奖团队

只需要回答几个问题,就能生成个性化的简历,还提供优化建议,安排AI模拟面试。这样的效率神器,就出现第二届百度搜索创新大赛的赛场上。 🚀 来自南京航空航天大学的“肝到凌晨”团队,利用文心一言插件平台“…

【新手解答8】深入探索 C 语言:递归与循环的应用

C语言的相关问题解答 写在最前面问题:探索递归与循环在C语言中的应用解析现有代码分析整合循环示例代码修改注意事项结论 延伸:递归和循环的退出条件设置解析使用递归使用循环选择适合的方法 写在最前面 一位粉丝私信交流,回想起了当初的我C…

ORACLE使用Mybatis-plus批量插入

ORACLE使用mybatis-plus自带的iservice.saveBatch方法时,会报DML Returing cannot be batch错误: 推测原因是oracle不支持insert into table_name (,) values (,),()的写法。且oracle不会自动生…

【C语言】超详解,让你C语言成功入门(五)——操作符

目录 1.算术操作符2.移位操作符2.1左移操作符<<2.2右移操作符>> 3.位操作符4.赋值操作符5.单目操作符5.1单目操作符介绍5.2sizeof 和 数组 6.关系操作符7.逻辑操作符8.条件操作符&#xff08;三目操作符&#xff09;9.逗号表达式10.下标引用、函数调用和结构体11.表…

基于DotNetty实现一个接口自动发布工具 - 通信实现

基于 DotNetty 实现通信 DotNetty : 是微软的 Azure 团队&#xff0c;使用 C#实现的 Netty 的版本发布。是.NET 平台的优秀网络库。 项目介绍 OpenDeploy.Communication 类库项目,是通信相关基础设施层 Codec 模块实现编码解码 Convention 模块定义约定,比如抽象的业务 Handle…

华为手环 8 五款免费表盘已上线,请注意查收

华为手环 8&#xff0c;作为一款集时尚与实用于一体的智能手环&#xff0c;不仅具备强大的功能&#xff0c;还经常更新的表盘样式&#xff0c;让用户掌控时间与健康的同时&#xff0c;也能展现自己的时尚品味。这不&#xff0c;12 月官方免费表盘又上新了&#xff0c;推出了五款…

批量AI创作文案的工具,批量AI创作文章的软件

人工智能&#xff08;AI&#xff09;的应用不断拓展&#xff0c;其中批量AI创作逐渐成为许多文本创作者和企业编辑的热门选择。面对海量的文章需求&#xff0c;批量AI创作工具能够高效、快速地生成大量文本内容&#xff0c;从而减轻创作者的工作负担。本文将专心分享批量AI创作…

Linux last命令教程:如何查看用户的登录和注销历史(附案例详解和注意事项)

Linux last命令介绍 last命令在Linux中用于显示自文件/var/log/wtmp创建以来所有用户的登录和注销列表。可以给出一个或多个用户名作为参数&#xff0c;以显示他们的登录&#xff08;和注销&#xff09;时间和主机名。 Linux last命令适用的Linux版本 last命令在大多数Linux…

高温老化房稳定性、应用领域

高温老化房控制系统的稳定性主要有四点: 1. 温度控制:控制系统确保老化室内的温度在整个老化试验过程中保持稳定并在期望的范围内。这种稳定性对于准确可靠的测试结果至关重要。 2. 湿度控制:控制系统同时保持老化室内湿度水平稳定。这一点很重要&#xff0c;因为某些材料或产…

UE5 - 把ArchvizExplorer项目改造成自己的数字孪生项目 - 开发记要

参考&#xff1a; https://blog.csdn.net/qq_17523181/article/details/133853099 https://blog.csdn.net/qq_17523181/article/details/134455597 1. 安装项目 https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://karldetroit.com/archviz-exp…

inBuilder低代码平台新特性推荐-第十三期

各位知乎的友友们&#xff0c;大家好~ 今天来给大家介绍一下inBuilder低代码平台社区版中特性推荐系列第十三期——登录配置&#xff01; inBuilder低代码平台内置了多种表单登录方式&#xff1a;用户名密码、AD域、数字证书。用户可以通过系统的登录页面进行登录。登录界面样…

提升--22---ReentrantReadWriteLock读写锁

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 ReadWriteLock----读写锁1.读写锁介绍线程进入读锁的前提条件&#xff1a;线程进入写锁的前提条件&#xff1a;而读写锁有以下三个重要的特性&#xff1a; Reentran…

从浅入深掌握进阶结构体(C语言)

前言 这一期我们将继续讲解结构体的知识&#xff0c;还没有看过上一期的小伙伴一定要赶紧去学习哦。 上一期&#xff0c;冲鸭&#xff01; 那么话不多说我们开始今天的学习吧&#xff01; 文章目录 1,结构体的自引用2,匿名结构体3,位段4,结构体的传参5,尾声 1,结构体的自引用 …

Docker篇之docker部署harbor仓库

一、首先需要安装docker step1&#xff1a;安装docker #1、安装yun源 yum install -y yum-utils #2、配置yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 如果上面源不稳定的话&#xff0c;更换为下列的aliyun源 yu…

Redis数据结构之压缩列表

压缩列表是Redis为节约内存而开发的&#xff0c;是由一系列特殊编码的连续内存块组成的顺序型数据结构。一个压缩列表可以包含任意多个节点&#xff0c;每个节点可以保存一个字节数组或者整数值。 压缩列表构成 zlbytes: 记录整个压缩列表占用的内存字节数&#xff0c;对压缩列…

预付费用电管理系统在商场及宿舍的应用

安科瑞电气股份有限公司 上海嘉定 201801 【摘要】本文主要讨论了预付费用电管理系统软、硬件的构建方法&#xff0c;软件系统的各个模块设计&#xff0c;以及软、硬件设计过程中解决的主要问题。1联5系8电2话171微3信5同2号2 【关键词】预付费电能表硬件设计软件设计 引言 …

linux基础五:linux 系统(进程状态+进程优先级+调度和切换+环境变量)

linux 系统 一.进程状态&#xff1a;1.睡眠状态(sleep)&#xff1a;2.磁盘休眠状态(disk sleep)&#xff1a;3.停止状态(stoped --- T)&#xff1a;4.死亡状态&#xff1a;5.控制状态&#xff08;t&#xff09; 二.僵尸进程和孤儿进程&#xff1a;1.僵尸状态&#xff1a;2.孤儿…