FreeRTOS任务详解

news2024/11/24 14:20:12

一、任务的创建与删除

1.任务的基本概念

       RTOS系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习 RTOS 系统的工程 师或者学生主要就是为了使用 RTOS 的多任务处理功能,初步上手 RTOS 系统首先必须掌握的 也是任务的创建、删除、挂起和恢复等操作,由此可见任务管理的重要性

2.什么是多任务系统?

       回想一下我们以前在使用 51、STM32 单片机裸机(未使用系统)的时候一般都是在 main 函数里面用 while(1)做一个大循环来完成所有的处理,即应用程序是一个无限的循环,循环中调用相应的函数完成所需的处理。有时候我们也需要中断中完成一些处理。相对于多任务系统而言,这个就是单任务系统,也称作前后台系统中断服务函数作为前台程序,大循环 while(1)作为后台程序

​ 

3.任务创建与删除相关函数

任务创建与删除相关函数有如下三个:

函数名称
函数作用
xTaskCreate()
动态方式创建任务
xTaskCreateStatic() 静态方式创建任务(不常用)
vTaskDelete() 删除任务
任务动态创建与静态创建的区别:
  • 动态创建任务的堆栈由系统分配,而静态创建任务的堆栈由用户自己传递。
  • 通常情况下使用动态方式创建任务。

xTaskCreate 函数原型

 

  • pxTaskCode: 指向任务函数的指针。

  • pcName: 任务名称的字符串。

  • usStackDepth: 任务堆栈的大小,以字节为单位。

  • pvParameters: 传递给任务函数的参数指针。

  • uxPriority: 任务的优先级,数值越大表示优先级越高。

  • pxCreatedTask: 任务句柄的指针,用于返回创建的任务句柄。

返回值
描述
pdPASS 任务创建成功
errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY 任务创建失败

 vTaskDelete 函数原型

void vTaskDelete(TaskHandle_t xTaskToDelete);
  • 只需将待删除的任务句柄传入该函数,即可将该任务删除。
  • 当传入的参数为NULL,则代表删除任务自身(当前正在运行的任务)。
  1. 创建任务

在FreeRTOS中,任务的创建主要包括以下步骤:

  1. 定义任务句柄变量:

任务句柄是一个指向任务控制块(TCB)的指针,用于引用和管理任务。您需要在任务函数外定义一个任务句柄变量,例如:

TaskHandle_t xTaskHandle;
  1. 编写任务函数:

任务函数是实现任务功能的函数,可以在函数内部调用FreeRTOS提供的各种API函数来实现任务通信、同步、延时等功能。任务函数的原型如下:

void vTaskFunction(void *pvParameters);

参数 pvParameters 是一个指向参数的指针,可以将任务函数的输入参数通过 pvParameters 传递给任务函数。

  1. 创建任务:

使用API函数 xTaskCreate() 创建任务。该函数原型如下:

 
 
  1. BaseType_t xTaskCreate(TaskFunction_t pxTaskCode,

  2. constchar * const pcName,

  3. const configSTACK_DEPTH_TYPE usStackDepth,

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

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

相关文章

Tektronix泰克MSO4054混合信号示波器

泰克MSO4054混合信号示波器是一款功能强大的测量仪器,它集成了数字存储示波器和逻辑分析仪的功能,为工程师提供了全面而精确的信号分析解决方案。在今天的高速电子设备开发中,混合信号示波器已经成为不可或缺的工具,而泰克MSO4054…

集中式抄表是什么?什么叫集中式抄表?

1.集中式抄表:简述 集中式抄表是一种现代化、高效率的电力工程、水力发电或燃气计量方法,它改变了传统的人工抄表方式,完成了远程自动化数据收集。这类系统主要由中央服务器、通信系统及安装在用户端智能化表计构成,大大提高了公…

Sarcasm detection论文解析 |CAT-BiGRU

论文地址 论文地址:CAT-BiGRU: Convolution and Attention with Bi-Directional Gated Recurrent Unit for Self-Deprecating Sarcasm Detection | Cognitive Computation github:Ashraf-Kamal/Self-Deprecating-Sarcasm-Detection (github.com) 论文首页 笔记框架 …

液晶数显式液压万能试验机WES-600D技术方案书

一、简介 主机为四立柱、两丝杠、油缸下置式,拉伸空间位于主机的上方,压缩、弯曲试验空间位于主机下横梁和工作台之间。测力仪表采用高清液晶显示屏,实验数据方便直观。 二、 传动系统 下横梁升降采用电机经减速器、链传动机构、丝杠副传动…

全域团购外卖SAAS是什么?能赚钱吗?

最近,很多人都在问与全域团购外卖相关的话题,其中,全域团购外卖SAAS是什么、全域团购外卖SAAS有哪些等问题更是稳居前列。的确,对于没有接触过团购外卖或者其他本地生活服务业务的人来说,全域团购外卖SAAS乍一看确实有…

c3 笔记8 css排版技巧

相关内容:边界、边框、位置(absolute、relative、static)、overflow、z-index、超链接、鼠标光标特效、…… margin:上边界值 右边界值 下边界值 左边界值 笔记来源: ©《HTML5CSS3JavaScript网页设计》陈婉凌编&#xff…

[力扣]——387.字符串中的第一个唯一字符

. - 力扣&#xff08;LeetCode&#xff09; class Solution {public int firstUniqChar(String s) {int[] count new int[256];// 统计每个字符出现的次数for(int i 0; i < s.length(); i){count[s.charAt(i)];}// 找第一个只出现一次的字符for(int i 0; i < s.lengt…

电脑显示丢失mfc140u.dll怎么修复,总共有7个方法

mfc140u.dll 是一个动态链接库&#xff08;Dynamic Link Library&#xff09;文件&#xff0c;它是Microsoft Foundation Class (MFC)库的一部分&#xff0c;专为使用C编程语言开发Windows应用程序而设计。MFC库由微软提供&#xff0c;作为一个高级的应用程序框架&#xff0c;旨…

耕耘未来——揭秘第一产业的无限潜能

在浩瀚的科技宇宙中&#xff0c;当火星探测器的每一次着陆都能激起全球狂欢&#xff0c;当虚拟现实的浪潮让我们触碰未来&#xff0c;有一个领域&#xff0c;以其恒久不变的坚韧&#xff0c;默默地滋养着人类文明的根脉——这就是第一产业&#xff0c;那片古老而又充满生机的土…

关于YOLO8学习(六)安卓部署ncnn模型--图片检测

前文 关于YOLO8学习(一)环境搭建,官方检测模型部署到手机 关于YOLO8学习(二)数据集收集,处理 关于YOLO8学习(三)训练自定义的数据集 关于YOLO8学习(四)模型转换为ncnn 关于YOLO8学习(五)安卓部署ncnn模型–视频检测 简介 前文第五章,讲述了部署自定义模型后,进…

数字藏品app功能介绍

主要功能介绍 艺术品发售 用户可以在平台上浏览和购买各种艺术品藏品。这些藏品由平台或艺术家发布&#xff0c;并且后台可以设置不同的稀有度&#xff0c;以满足不同用户的需求和收藏喜好。 后台藏品管理 管理员在后台可以灵活地设置藏品的稀有度、价格、数量等信息。不同…

​XMall商城微信小程序前端技术解析

摘要 随着移动互联网的深入发展&#xff0c;微信小程序以其轻量级、便捷性和即用即走的特点&#xff0c;成为了众多企业和开发者关注的焦点。XMall商城微信小程序前端作为一款开源项目&#xff0c;以其精美的页面设计、丰富的功能和高效的性能&#xff0c;受到了广大开发者和用…

恒创科技「5月活动」中国香港/美国服务器配置及价格汇总

值此 5 月&#xff0c;各大云服务商的促销活动也是接连不断。近日&#xff0c;恒创科技上线了 5 月出海乐购“惠”活动&#xff0c;从 4 月 28 日开始&#xff0c;持续整个 5 月份。活动分精选云产品、主流物理服务器、DDoS 防护、免费试用等四大专区&#xff0c;包含几十款企业…

C语言例题37、输入三组数字,按照从小到大的顺序排列输出

#include<stdio.h>int main() {int num[3];printf("请输入3组数字&#xff1a;");for (int i 0; i < 3; i)scanf("%d", &num[i]);for (int i 0; i < 2; i) { //每次选出最小值放在数组前面for (int j i 1; j < 3; j) {if (num[j] …

《挑战拆解100个产品:喜马拉雅》

在数字化时代&#xff0c;娱乐形式的转变引领着人们对于音频内容的追求。作为音频平台中的佼佼者&#xff0c;“喜马拉雅”软件以其独特的产品定位、针对性的用户群体、创新的业务模式以及不断优化的产品生命周期而成为了行业的领军者。本文将从这几个方向深入分析&#xff0c;…

一站式PDF解决方案:如何部署自己的PDF全能工具(Docker部署和群晖部署教程)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 开始部署 📒📝 Docker部署📝 群晖部署📝 本地安装⚓️ 相关链接 ⚓️📖 介绍 📖 在数字化办公的今天,PDF文件几乎成了我们日常工作中不可或缺的一部分。但你是否曾因为PDF文件的编辑、转换、合并等问题而头疼?如果…

js api part5

学生信息管理系统 现在着急没看..........5.15后一定看 没css&#xff1f;c <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scal…

做安卓应用开发的我,转前端开发了

距离转前端开发已经快3个月了&#xff0c;现在自己也慢慢的熟悉了开发。 在2月份的时候。领导找我们移动小组的谈话&#xff0c;主要是关于转前端或者后端的问题。由于公司移动端的选型&#xff0c;对安卓原生的需求降低&#xff0c;问下我们转其他开发的需求。 我毫不犹豫的选…

什么是泛域名证书?与普通SSL证书有什么区别

随着互联网的发展&#xff0c;越来越多的网站开始使用SSL证书来保护用户的隐私和安全。在SSL证书中&#xff0c;泛域名SSL证书和普通域名证书是两种常见的类型。那么&#xff0c;什么是泛域名SSL证书&#xff0c;与普通域名证书有什么区别呢&#xff1f; 首先&#xff0c;我们来…

豆瓣8.7分,30000人都在阅读的量化用户体验实操书全面更新!

本文源自《用户体验度量 &#xff1a;收集、分析与呈现》&#xff08;第 3 版&#xff09;一书前言。 欢迎来到《用户体验度量 &#xff1a;收集、分析与呈现》&#xff08;第 3 版&#xff09;的世界&#xff01; 我们非常兴奋地要在本书中与大家分享用户体验度量的最新、最先…