FreeRTOS 任务相关 API 函数

news2024/11/20 0:42:12

FreeRTOS 中用于创建和删除任务的 API 函数如下表所示:

1. 函数 xTaskCreate()

此函数用于使用动态的方式创建任务,任务的任务控制块以及任务的栈空间所需的内存, 均由 FreeRTOS 从 FreeRTOS 管理的堆中分配,若使用此函数,需要在 FreeRTOSConfig.h 文件 中将宏 configSUPPORT_DYNAMIC_ALLOCATION 配置为 1。此函数创建的任务会立刻进入就 绪态,由任务调度器调度运行。函数原型如下所示:

BaseType_t xTaskCreate( 
     TaskFunction_t pxTaskCode, 
     const char * const pcName, 
     const configSTACK_DEPTH_TYPE usStackDepth, 
     void * const pvParameters, 
     UBaseType_t uxPriority, 
     TaskHandle_t * const pxCreatedTask
); 

函数 xTaskCreate()的形参描述,如下表所示:

函数 xTaskCreate()的返回值,如下表所示:

 

2. 函数 xTaskCreateStatic()

此函数用于使用静态的方式创建任务,任务的任务控制块以及任务的栈空间所需的内存, 需 要 由 用 户 分 配 提 供 , 若 使 用 此 函 数 , 需 要 在 FreeRTOSConfig.h 文 件 中 将 宏

configSUPPORT_STATIC_ALLOCATION 配置为 1。此函数创建的任务会立刻进入就绪态,由任 务调度器调度运行。函数原型如下所示:

TaskHandle_t xTaskCreateStatic( 
     TaskFunction_t  pxTaskCode, 
     const char *    const pcName, 
     const uint32_t  ulStackDepth, 
     void * const    pvParameters, 
     UBaseType_t     uxPriority, 
     StackType_t *   const puxStackBuffer, 
     StaticTask_t *  const pxTaskBuffer
);

 函数 xTaskCreateStatic()的形参描述,如下表所示:

函数 xTaskCreateStatic()的返回值,如下表所示:

 

3. 函数 xTaskCreateRestricted()

此函数用于使用动态的方式创建受 MPU 保护的任务,任务的任务控制块以及任务的栈空 间所需的内存,均由 FreeRTOS 从 FreeRTOS 管理的堆中分配,若使用此函数,需要将宏

configSUPPORT_DYNAMIC_ALLOCATION 和宏 portUSING_MPU_WRAPPERS 同时配置为 1。 此函数创建的任务会立刻进入就绪态,由任务调度器调度运行。函数原型如下所示:

BaseType_t xTaskCreateRestricted( 
     const TaskParameters_t * const pxTaskDefinition, 
     TaskHandle_t * pxCreatedTask
); 

 函数 xTaskCreateRestricted()的形参描述,如下表所示:

函数 xTaskCreateRestricted()的返回值,如下表所示:  

 

4. 函数 xTaskCreateRestrictedStatic()

此函数用于使用静态的方式创建受 MPU 保护的任务,此函数创建的任务的任务控制块以 及任务的栈空间所需的内存,需要由用户自行分配提供,若使用此函数,需要将宏

configSUPPORT_STATIC_ALLOCATION 和宏 portUSING_MPU_WRAPPERS 同时配置为 1。此 函数创建的任务会立刻进入就绪态,由任务调度器调度运行。函数原型如下所示:

BaseType_t xTaskCreateRestrictedStatic( 
     const TaskParameters_t * const pxTaskDefinition, 
     TaskHandle_t * pxCreatedTask
); 

 函数 xTaskCreateRestrictedStatic()的形参描述,如下表所示:

 函数 xTaskCreateRestrictedStatic()的返回值,如下表所示:

5. 函数 vTaskDelete()

此函数用于删除已被创建的任务,被删除的任务将被从就绪态任务列表、阻塞态任务列表、 挂起态任务列表和事件列表中移除,要注意的是,空闲任务会负责释放被删除任务中由系统分 配的内存,但是由用户在任务删除前申请的内存,则需要由用户在任务被删除前提前释放,否 则将导致内存泄露。若使用此函数,需要在FreeRT

OSConfig.h文件中将宏INCLUDE_vTaskDelete

配置为 1。函数原型如下所示:

void vTaskDelete(TaskHandle_t xTaskToDelete); 

 函数 vTaskDelete()的形参描述,如下表所示:

 函数 vTaskDelete()无返回值。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聚焦慕思欧洲设计中心,用设计谱写健康睡眠新篇章

4月20日,在意大利米兰,多位欧洲顶尖设计师齐聚ADI博物馆,共同见证“梦享之美”——慕思欧洲设计中心暨设计国际梦之队成立发布会的盛大召开。慕思此次发布会特地选定在米兰国际家具展期间,而这是公认的世界三大家具展之一&#xf…

DF竞赛平台携手嬴彻科技与清华大学智能产业研究院,助力自动驾驶挑战赛圆满落幕!

由DataFountain竞赛平台(简称DF平台)提供办赛支持的「首届“嬴彻-清华AIR杯”自动驾驶挑战赛:决策规划算法」已圆满落幕。作为一场前沿性自动驾驶类比赛,本次大赛立足“高速道路”和“城市道路”两大真实场景,选择“半…

SEO文章批量生成

SEO文章生成器 想必大部分人对于 SEO 这个词不会陌生,它是指一系列的优化策略,目的是让网站能够在搜索引擎上更容易地被检索,并获得更多的流量和曝光度。但是,SEO 的优化并非易事,尤其对于那些没有相关技术知识和经验…

科技云报到:存储开源,风雨飘摇下“披着羊皮的狼”?

科技云报道原创。 这些年开源界的风风雨雨,时不时撼动着人们的内心。 2022年,俄乌冲突导致全球最大的独立开源软件公司SUSE、美国开源软件巨头Redhat、主流开源容器引擎Docker,纷纷宣布停止与俄罗斯的合作。 而全球最大的开源及私有代码项目…

react-8 Redux 状态管理 - 持久化存储 => 进阶:React-Redux()和模块化

1.redux redux是独立于react的库,是js状态管理库,提供可预测的状态管理。Vue也可用,但是和react比较搭配 。 2. 什么时候用 redux? 解决:任意:多组件共享状态, 解决:任意:两个…

83.qt qml-初步学习2D粒子影响器(二)

由于QmlBook in chinese翻译过来的文字有些比较生疏难于理解,所以本章在它的基础上做些个人理解,建议学习的小伙伴最好配合QmlBook in chinese一起学习。 QML粒子所有类型: Qt Quick Particles QML Types | Qt Quick 6.5.0 Affector类型: Attractor QML Type | Qt Quick 6.5.…

TouchGFX界面开发 | TouchGFX软件安装

TouchGFX软件安装 TouchGFX和STemWin类似,都是一个GUI框架,可以方便的在STM32 Cortex-M4 以及更高级别的STM32芯片上创建GUI应用程序。 本文中的TouchGFX软件安装,是基于已经安装有STM32CubeMX Keil MDK-ARM开发环境的情况下进行的&#x…

CSS3 2D变换

CSS3 2D变换 位移: div {transform: translateX(30px); /*水平位移*/transform: translateY(30px); /*垂直位移*/transform: translate(30px, 30px); /*两个方向位移*/ }注意:位移的百分比是元素本身,不是父元素 div {transform:…

JVM常用调优参数 ——JVM篇

JVM常用性能调优参数详解 ​ 在学习完整个JVM内容后,其实目标不仅是学习了解整个JVM的基础知识,而是为了进行JVM性能调优做准备,所以以下的内容就是来说说JVM性能调优的知识。 一、性能调优 ​ 性能调优包含多个层次,比如&…

学习实践-Vicuna【小羊驼】(部署+运行)

1、Vicuna【小羊驼】-FastChat"更快的对话" 介绍 3 月底,UC伯克利开源大语言模型Vicuna来了,这是一个与 GPT-4 性能相匹配的 LLaMA 微调版本。“缺啥补啥缺啥练啥,傻子也突出”! Vicuna 使用从 ShareGPT 收集的用户共…

生成对抗网络GAN

1.基本概念 生成对抗网络Generative Adversarial Networks(GAN)包含生成模型(generative model)和判别模型 (discriminative model) 两个模型。生成模型的任务是生成和原始数据相似的实例,判别模型的任务是判断给定的实…

四百左右音质好的蓝牙耳机有哪些?2023公认音质最好的蓝牙耳机排行

与有线耳机相比,蓝牙耳机有着功能多样、使用便捷的优点。最近看到很多人问,四百内音质好的蓝牙耳机有哪些?针对这个问题,我来给大家推荐几款音质最好的蓝牙耳机,一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价&…

Mybatis(九)插件原理及应用

一、Mybatis的插件实现原理 Mybatis允许用户通过自定义拦截器的方式改变Sql的执行方式,例如在Sql执行时追加Sql分页语法,从而达到减缓分页查询的目的,用户自定义拦截器也被称为Mybatis插件。 我们先从插件的配置及解析过程来分析插件&#…

蓝奥声核心技术分享——基于物联网的无线智能标签刷新控制技术

1.技术背景 基于物联网的无线智能标签刷新控制技术指基于对目标场景状态变化的协同感知而获得触发响应并进行智能决策,属于蓝奥声核心技术--边缘协同感知(EICS)技术的关键支撑性技术之一。该项技术涉及物联网边缘域的无线通信与智能控制技术领域。 物联…

学习同步异步的概念,并了解MQ消息队列

文章目录 一、 同步和异步1.1 同步调用1.2 异步调用 二、MQ1.1 介绍1.2 MQ的优点和使用场景 一、 同步和异步 1.1 同步调用 同步调用是一种程序调用方式,在该调用方式中,调用者发起一个请求,然后一直等待被调用者返回响应结果后再继续执行。…

wps - 使用宏来为每行标记序号

在WPS中遇到需要加序号的虽然可以用项目符符号来标注# 但或许用宏更厉害一些 WPS 的宏是一种自动化工具,可以通过编写宏代码来自动执行一些操作,例如创建和编辑文档、打印、格式化等。 WPS 宏的编写可以使用 VBA(Visual Basic for Applicat…

236. 二叉树的最近公共祖先 ——【Leetcode每日一题】

236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff…

inode和软硬链接

文章目录: 一、理解文件系统1.1 什么是inode1.2 磁盘了解1.2.1磁盘的硬件结构1.2.2 磁盘的分区1.2.3 EXT2文件系统 二、软硬链接2.1 软链接2.2 硬链接 一、理解文件系统 1.1 什么是inode inodes 是文件系统中存储文件元数据的数据结构。每个文件或目录都有一个唯一…

JavaSE学习进阶day06_01 数据结构(进阶)

第一章 数据结构(温习数据结构的内容) 1.1 树基本结构介绍 树具有的特点: 每一个节点有零个或者多个子节点 没有父节点的节点称之为根节点,一个树最多有一个根节点。 每一个非根节点有且只有一个父节点 名词含义节点指树中的…

第二届“威固新能源 GO野”,威固重塑新能源出行不凡体验

中国,上海,近日——全球特种材料公司伊士曼旗下汽车膜品牌威固(V-KOOL),于近日开启了第二届“威固新能源 GO野”不凡之旅,通过专为新能源而来的创新产品与服务,引领高端新能源车主驶出城市生活的…