<FreeRTOS入门第四节>其他相关API介绍

2023-05-16

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、API介绍?
  • 二、API具体介绍
    • 1.UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask );
      • 1.1 功能:查询某个任务的优先级
      • 1.2 源码分析:
      • 1.3 使用方法(放到一个任务中实现的)
    • 2.void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority );
      • 2.1 功能:设置某任务的优先级
      • 2.2 使用声明
      • 2.3 使用方法(放到一个任务中实现的)
  • 总结


前言


今天放纵了一下自己,打了几局CSGO,所以今天只学习了我之前学习的创建任务,删除任务等其他API外的一些API

一、API介绍?

下面是我要介绍的本篇的API,我主要参考的是正点原子FreeRTOS开发文档第十一章内容。
在这里插入图片描述

二、API具体介绍

1.UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask );

1.1 功能:查询某个任务的优先级

1.2 源码分析:

#if ( INCLUDE_uxTaskPriorityGet == 1 )

    UBaseType_t uxTaskPriorityGet( const TaskHandle_t xTask )
    {
        TCB_t const * pxTCB;
        UBaseType_t uxReturn;

        taskENTER_CRITICAL();
        {
            /* If null is passed in here then it is the priority of the task
             * that called uxTaskPriorityGet() that is being queried. */
            pxTCB = prvGetTCBFromHandle( xTask );
            uxReturn = pxTCB->uxPriority;
        }
        taskEXIT_CRITICAL();

        return uxReturn;
    }

#endif /* INCLUDE_uxTaskPriorityGet */

以上我们可以看出使用uxTaskPriorityGet时必须先打开INCLUDE_uxTaskPriorityGet的宏
然后他是带一个UBaseType_t的类型的返回值的函数由下面定义可以看出他是无符号长整形数据这样我们打印他可以用%d作为占位符。
其次他的形参是任务句柄。

    typedef unsigned long    UBaseType_t;

1.3 使用方法(放到一个任务中实现的)

xReturn=xTaskCreate(Task1Function,"Task1",128,NULL,2,&HandlerTask1);//任务一
void Task1Function( void * param){
	UBaseType_t TaskPriority;
	TaskPriority=uxTaskPriorityGet(HandlerTask1);//获取任务一的优先级
	for(;;){
	printf("Priority->%d\r\n",TaskPriority);	

		vTaskDelay(30);		
	}
}

打印结果:
在这里插入图片描述

2.void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority );

2.1 功能:设置某任务的优先级

2.2 使用声明

/******************实现是必须打开下面INCLUDE_vTaskPrioritySet的宏***************************/
#if ( INCLUDE_vTaskPrioritySet == 1 )
/*
	然后下面的vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority )带两个形参,第一个是我们要修改的任务句柄、第二个是我们需要修改的优先级。
*/
void vTaskPrioritySet( TaskHandle_t xTask, UBaseType_t uxNewPriority ){
	......
}
#endif

2.3 使用方法(放到一个任务中实现的)

xReturn=xTaskCreate(Task1Function,"Task1",128,NULL,2,&HandlerTask1);//任务一
void Task1Function( void * param){
	UBaseType_t TaskPriority;
	
	vTaskPrioritySet(HandlerTask1,3);//修改任务一的优先级
	TaskPriority=uxTaskPriorityGet(HandlerTask1);
	for(;;){
	printf("Priority->%d\r\n",TaskPriority);	

		vTaskDelay(30);		
	}
}

打印结果:
在这里插入图片描述
这里的API有点多,我就不一一说明了,有兴趣的取看正点原子的FreeRTOS文档,第十一章

。。。。

总结

今天主要看了一下freeRTOS其他的API实现和功能
不飞则已、一飞冲天,不鸣则已,一鸣惊人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

<FreeRTOS入门第四节>其他相关API介绍 的相关文章

随机推荐

  • Linux部署Python项目

    项目部署 项目部署的操作通常是由运维人员来进行统一管理装配的 xff0c 但是对于一个开发人员来讲 xff0c 基础的项目部署还是要会的 这里我主要讲解python的项目是如何部署的 xff0c 至于项目哪里来的 xff0c 这就要看观众如
  • 2、机器学习简介及其分类

    简介 机器学习是指让机器从数据中自动学习规律和知识 并利用这些规律和知识进行预测或决策的技术 机器学习包括监督学习 无监督学习 强化学习 其中监督学习也被称作有监督的学习 有监督的意思就是预先知道据有什么样的目标 通过一些已经知道结果的数据
  • VScode启动Vue项目

    VScode启动Vue项目 1 使用VScode打开文件夹 2 找到运行按钮 3 判断有没有默认的配置文件存在 4 若文件夹存在就检查配置文件是否存在 xff08 1 xff09 打开launch json xff0c 把如下代码粘贴到里面
  • Gunicorn+django部署

    部署前提是服务器中要有项目中所需的其他服务 xff0c 例 xff1a mysql数据库 xff0c nginx xff0c python解释器等 xff0c 在其他环境搭好的情况下使用此方式可简单部署一个django项目 至于安装上面提到
  • Protobuf生成文件报错

    Mac下protobuf生成文件报错问题解决办法 xff0c windows下就不会这么麻烦了 xff0c 如果linux下出现类似报错信息按照下面的解决逻辑依然适用 1 由 go out引发的报错 1 报错信息 xff1a user 64
  • Git操作的基本命令

    git命令常用步骤 初始化 xff0c 把当前文件夹作为git本地仓库 git init 把本地仓库与选程仓库关联 git remote add origin http gitee com 把项目区中做了修改的文件添加到暂存区 git ad
  • grpc的使用

    需要保证电脑中安装了 xff1a protobuf安装教程如果出现报错请看博客 xff1a protobuf报错问题解决基本使用demo地址 xff1a demo安全传输 流式传输的demo地址 xff1a demo2 简介 xff1a r
  • Matlab找不到新添加在路径里的.m文件

    我是把文件放在matlab toolbox路径下了 xff0c 需要更新一下toolboxcache就可以了 使用命令的方式 xff1a rehash toolboxcache
  • C中字符串查找

    目录 1 查找单个字符 strchr strrchr 2 查找多个字符中任一字符 strpbrk 3 查找一个子串 strstr 4 逐个检查两个字符串 strspc strcspn 字符串查找分为 xff1a 在字符串中查找单个字符 xf
  • 神经网络中的epoch、batch、batch_size、iteration的理解

    神经网络中的epoch batch batch size iteration的理解 下面说说这三个区别 xff1a xff08 1 xff09 batchsize xff1a 批大小 在深度学习中 xff0c 一般采用SGD训练 xff0c
  • PyTorch源码解读(四)torchvision.models

    PyTorch框架中有一个非常重要且好用的包 xff1a torchvision xff0c 该包主要由3个子包组成 xff0c 分别是 xff1a torchvision datasets torchvision models torch
  • 3、AI的道德风险测试

    AI的道德性 AI系统的道德性如何保障是一个重要而复杂的问题 涉及到人工智能的发展 应用 监管 伦理 法律等多个方面 保障AI系统的道德性是一个很重要的问题 因为AI系统不仅会影响人类的生活和工作 也会涉及人类的价值观和伦理道德原则 针对这
  • 舵机单独供电时与单片机共地接线图

    转载 xff0c 原文链接为 xff1a https blog csdn net LUqingyaun article details 88600573 简单说 xff1a 外部电源两根线 xff0c VCC接舵机 xff0c GND接单片
  • 【正点原子】STM32开发板实验教程(F103)第52讲 I2C通信实验

    IIC通信 I2C xff08 IIC xff0c Inter Integrated Circuit xff09 xff0c 两线式串行总线 xff0c 由PHILIPS公司开发用于连接微控制器及外围设备 它是由数据线SDA和时钟线SCL构
  • 【解决方案】WSL2下rviz启动不了(Segmentation fault)

    好久没用WSL2了 xff0c 前几天使用了下 xff0c 发现rviz一直启动不了 出现以下问题 到处搜寻解决方案 xff0c 最后终于解决啦 xff01 xff01 参考文章 具体解决方案 首先启动rviz xff0c 出现上述问题 r
  • 【ROS】—— ROS通信机制——服务通信(三)

    文章目录 前言1 服务通信理论模型2 服务通信自定义srv2 1 定义srv文件2 2 编辑配置文件2 3 编译 3 服务通信自定义srv调用 C 43 43 3 1 vscode配置3 2 服务端3 3 客户端3 4 配置 CMakeLi
  • 【ROS】—— ROS常用组件_TF坐标变换_多态坐标变换与TF坐标变换实操(十一)

    文章目录 前言1 多态坐标变换1 1 发布方1 2 订阅方 C 43 43 1 3 订阅方 python 2 坐标系关系查看3 TF坐标变换实操 C 43 43 3 1准备3 2 生成新的乌龟3 3 增加键盘控制3 4 发布方 发布两只乌龟
  • 自动驾驶自主避障概况

    文章目录 前言1 自主避障在自动驾驶系统架构中的位置2 自主避障算法分类2 1 人工势场法 xff08 APF xff09 2 1 1引力势场的构建2 1 2斥力势场的构建2 1 3人工势场法的改进 2 2 TEB xff08 Timed
  • LQR算法基本原理

    LQR算法基本原理 前言 陈苏的最优控制 https www wendangwang com doc 1b3fea9be6dd6e50a295238b 3 文章是对陈苏的最优控制PPT的原理部分进行的简单总结 xff0c 若文中存在错误 x
  • <FreeRTOS入门第四节>其他相关API介绍

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 API介绍 xff1f 二 API具体介绍1 UBaseType t uxTaskPriorityGet const T