FreeRTOS学习 -- 任务相关API函数

一、任务创建和删除API函数

FreeRTOS 最基本的功能就是任务管理,而任务管理最基本的操作就是创建和删除任务。

FreeRTOS的任务创建和删除API函数如下:
在这里插入图片描述

1、函数 xTaskCreate()

此函数用来创建一个任务,任务需要 RAM 来保存于任务有关的状态信息(任务控制块),任务也需要一定的 RAM 来作为任务堆栈。如果使用函数 xTaskCreate() 来创建任务的话,那么这些所需的 RAM 就会自动的从 FreeRTOS 的堆栈中分配,因此必须提供内存管理文件,默认我们使用的 heap_4.c 这个内存管理文件,而且宏 configSUPPORT_DYNAMIC_ALLOCATION 必须为 1。

如果使用函数 xTaskCreateStatic()创建的话这些 RAM 就需要用户来提供了。新创建的任务默认就是就绪态的,如果当前没有比它更高优先级的任务运行那么此任务就会立即进入运行态开始运行,不管在任务调度器启动前还是启动后,都可以创建任务。
在这里插入图片描述

参数:

  • pxTaskCode 任务函数
  • pcName 任务名字,一般用于追踪和调试,任务名字长度不能超过 configMAX_TASK_NAME_LEN。
  • usStackDepth 任务堆栈大小,需要注意实际申请到的堆栈是 usStackDepth 的 4倍。其中空闲任务的任务堆栈大小为 configMINIMAL_STACK_SIZE。
  • pvParameters 传递给任务函数的参数。
  • uxPriority 任务优先级,范围 0~ configMAX_PRIORITIES-1。其中 0 是最低优先级,configMAX_PRIORITIES-1 是最高优先级。注意和 uC/OS 的区别,uC/OS 中 0 是最高优先级!宏 configMAX_PRIORITIES 不能超过 32 ! 也就是优先级不能超过 32 级。
  • pxCreatedTask 任务句柄,任务创建成功以后会返回任务的任务句柄。这个句柄其实就是任务的任务堆栈。此参数就用来保存这个任务句柄。

返回值:

  • pdPASS: 任务创建成功。
  • errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY: 任务创建失败,因为堆内存不足!

示例:
在这里插入图片描述

2、函数 xTaskCreateStatic()

此函数和 xTaskCreate() 的功能相同,噎死用来创建任务的。但是使用此函数创建的任务的 RAM 需要用户来提供。如果使用此函数的话需要将宏
configSUPPORT_STATIC_ALLOCATION 定义为 1。
在这里插入图片描述

参数:

  • pxTaskCode 任务函数
  • pcName 任务名字,一般用于追踪和调试,任务名字长度不能超过 configMAX_TASK_NAME_LEN。
  • usStackDepth 任务堆栈大小,需要注意实际申请到的堆栈是 usStackDepth 的 4倍。其中空闲任务的任务堆栈大小为 configMINIMAL_STACK_SIZE。
  • pvParameters 传递给任务函数的参数。
  • uxPriority 任务优先级,范围 0~ configMAX_PRIORITIES-1。其中 0 是最低优先级,configMAX_PRIORITIES-1 是最高优先级。注意和 uC/OS 的区别,uC/OS 中 0 是最高优先级!宏 configMAX_PRIORITIES 不能超过 32 ! 也就是优先级不能超过 32 级。
  • puxStackBuffer: 任务堆栈,一般为数组,数组类型要为 StackType_t 类型。
  • pxTaskBuffer: 任务控制块。

返回值:

  • NULL: 任务创建失败,puxStackBuffer 或 pxTaskBuffer 为 NULL 的时候会导致这个错误的发生。
  • 其他值: 任务创建成功,返回任务的任务句柄。

示例:
在这里插入图片描述

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

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

相关文章

前端js面试题--从字符串中删除删除注释代码

问题:从字符串中删除删除注释代码 描述: solution(weex,rex # and react\nflutter\nnative ssss !hybrid app, [#, !]) 写一个solution函数清除后面参数数组里面的字符串 打印效果 代码1 思路: 将字符全凡是有去掉标志符号的全部添加\n…

Java_File

介绍: File对象表示路径,可以是文件,也可以是文件夹。这个路径可以是存在的,也可以是不存在的,带盘符的路径是绝对路径,不带盘符的路径是相对路径,相对路径默认到当前项目下去找 构造方法&…

基于SSM的校园短期闲置资源置换平台(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的校园短期闲置资源置换平台(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过…

燃气电力瓶装气行业入户安检小程序开发

我们开发的小区业主入户安检小程序,旨在满足燃气、电力以及其他需要入户安检的行业需求。该程序支持自定义安检项目,实现线下实地安检与线上数据保存的完美结合。在安检过程中,我们可以拍照或录像,以确保安检的透明性和可追溯性&a…

渲染管线中光照的计算

文章目录 渲染管线中光照的计算前言法向量朗伯余弦定律漫反射环境光照镜面光照菲涅尔效应 表面粗糙度光照模型平行光源点光源衰减 聚光灯 渲染管线中光照的计算 前言 首先我们来看一下同一个模型在有光与无光下的区别: 无光: 有光 很明显的感知就是…

加速科技突破2.7G高速数据接口测试技术

随着显示面板分辨率的不断提升,显示驱动芯片(DDIC)的数据接口传输速率越来越高,MIPI、LVDS/mLVDS、HDMI等高速数据接口在DDIC上广泛应用。为满足高速数据接口的ATE测试需求,作为国内少数拥有完全自研的LCD Driver测试解…

WebSocket 来单提醒和客户催单功能

一:WebSocket : WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#…

vue 代码样式问题

部分电脑存在样式错乱问题&#xff0c;部分电脑样式正常。最后发现是样式写在 el-col 里面导致的。 注意&#xff1a;写样式不要放在 el-row 或者 el-row &#xff0c;导致部分电脑会出现莫名其妙的样式问题 <el-row class"detail"><el-col class"it…

OSPF NSSA区域

原理概述 OSPF 协议定义了 Stub 区域和 Totally Stub 区域这两种特殊的非骨干区域&#xff0c;为的是精简 LSDB 中 LSA 的数量&#xff0c;同时也精简路由表中的路由条目数量&#xff0c;实现优化设备和网络性能的目的。根据定义&#xff0c; Stub 区域或 Totally Stub 区域中是…

Springboot项目使用redis实现session共享

1.安装redis&#xff0c;并配置密码 这里就不针对于redis的安装约配置进行说明了&#xff0c;直接在项目中使用。 redis在windows环境下安装&#xff1a;Window下Redis的安装和部署详细图文教程&#xff08;Redis的安装和可视化工具的使用&#xff09;_redis安装-CSDN博客 2…

PHP+MySQL组合开发 自定义商城系统源码 带完整的安装代码包以及安装部署教程

随着电子商务的蓬勃发展&#xff0c;越来越多的企业和个人希望拥有自己的在线商城系统。小编给大家分享一款基于PHP和MySQL技术栈&#xff0c;开发的一套自定义商城系统源码。该系统旨在帮助用户快速搭建稳定、高效的电子商务平台&#xff0c;并提供灵活的自定义功能&#xff0…

ORA-02020:过多的数据库链接在使用

一、问题描述 今天同事说&#xff0c;有一个查询功能&#xff0c;同时查了几个子平台的dblink&#xff0c;页面返回报错。 提示ORA-02020&#xff1a;过多的数据库链接在使用&#xff1b; bad SQL grammar 二、解决办法 1&#xff09;分析业务需求 分析业务场景 &#xff0c;发…

美食推荐网站设计

**中文摘要&#xff1a;**在当今信息化、网络化的时代背景下&#xff0c;美食文化正逐渐融入人们的日常生活&#xff0c;而网络平台成为人们获取美食信息、分享美食体验的重要途径。为了满足广大美食爱好者对美食信息的探索和推荐需求&#xff0c;本文提出了一种创新的美食推荐…

谷歌开源!用 js 编写 Shell 脚本! | 开源日报 No.247

google/zx Stars: 41.4k License: Apache-2.0 zx 是一个用于编写更好脚本的工具。 提供有用的包装器&#xff0c;简化了对 child_process 的操作转义参数并提供合理的默认值使用 JavaScript 编写复杂脚本时比 Bash 更方便可以直接使用 npm 安装 dani-garcia/vaultwarden St…

Nest 快速上手 —— (三)中间件 / 异常过滤器

一、 中间件&#xff08;Middleware&#xff09; 1.特点 中间件是一个在路由处理程序之前被调用的函数。中间件函数可以访问请求和响应对象&#xff0c;以及应用程序请求-响应周期中的next()中间件函数。下一个中间件函数通常由一个名为next的变量表示。 中间件函数可以执行以…

5.9gunplot绘图堆叠柱状图

gunplot绘图堆叠柱状图 plot"要用的数据&#xff08;后缀名是.dat)" using 2 t(或者title) 跟着是要命名的属性名称 这个名称可以用.dat里的每列列名&#xff0c;也可以直接在后面跟着定义 plot "data.dat" using 2 t columnheader(2), using 3 t column…

PyQt5 解决界面无响应方案

文章目录 前言版本案例解决方案QThreadQTimer 局部变量创建异步线程导致 UI 未响应如果 QTimer 不使用 self.time 写法 个人简介 前言 在PyQt5中&#xff0c;GUI线程通常指的是Qt的主事件循环线程&#xff0c;也称为主线程。主线程负责处理GUI事件、更新UI界面等任务。在PyQt5…

如何通过OMS加快大表迁移至OceanBase

OMS&#xff0c;是OceanBase官方推出的数据迁移工具&#xff0c;能够满足众多数据迁移场景的需求&#xff0c;现已成为众多用户进行数据迁移同步的重要工具。OMS不仅支持多种数据源&#xff0c;还具备全量迁移、增量同步、数据校验等功能&#xff0c;并能够对分表进行聚合操作&…

系统运维(虚拟化)

1.VLAN VLAN&#xff08;Virtual Local Area Network&#xff09;即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。 每个VLAN是一个广播域&#xff0c;VLAN内的主机间可以直接通信&#xff0c;而VLAN间则不能直接互通。这样&#xff0c;广播报…

深度学习网络:设计、开发和部署

​书籍&#xff1a;Deep Learning Networks: Design, Development and Deployment 作者&#xff1a;Jayakumar Singaram&#xff0c;S. S. Iyengar&#xff0c;Azad M. Madni 出版&#xff1a;Springer书籍下载-《​深度学习网络&#xff1a;设计、开发和部署》该教材为学生和工…