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测试解…

【Web前端】定位_浮动_音视频

1、定位 1.1想对定位 相对定位,使用relative,参考点是标签之前的位置,不是相对于父节点、同级节点或浏览器。相对定位通过left、right进行水平偏移,通过top、bottom进行垂直偏移Ieft:表示相对于原本位置的左外边界右移的距离rig…

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

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

算法提高之迷宫问题

算法提高之迷宫问题 核心思想&#xff1a;最短路问题 从(n-1,n-1)开始bfs 往前走一个就存入pre数组 之后再遍历pre数组输出 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 1010,M N*N;#define x first#def…

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…

笨蛋学C++ 之 CMake的使用

笨蛋学C 之 CMake的使用 CMake生成可执行程序的流程CMake命令执行流程安装CMakelinux执行cpp文件运行删除 基本语法cmake命令构成运行.cmake文件&#xff0c;在CMake中如何打印信息变量操作set、listsetlist 流程控制条件流程控制循环流程控制forwhile 函数作用域全局作用域局部…

解读Inscode AI:开启代码智能化的新时代

导语&#xff1a; 近年来&#xff0c;人工智能技术的迅猛发展已经深刻地影响着各个行业&#xff0c;而在软件开发领域&#xff0c;Inscode AI的出现无疑将给代码智能化带来一场革命。本文将为大家解读Inscode AI的特点和应用&#xff0c;探索其如何改变我们的软件开发方式。 一…

java设计模式八 享元

享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过共享技术有效地支持大量细粒度的对象。这种模式通过存储对象的外部状态在外部&#xff0c;而将不经常变化的内部状态&#xff08;称为享元&#xff09;存储在内部&#xff0c;以此来减…

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的变量表示。 中间件函数可以执行以…