FreeRTOS:任务通知

目录

一、简介

二、相关API

 1.发送任务通知的API

 2.获取任务通知的API

三、使用场景

1.代替消息队列

2.代替二值信号量

3.代替计数信号量

4.代替事件组


一、简介

        FreeRTOS的任务通知(Task Notifications)是一个轻量级、快速的机制,用于在任务之间发送简单的信号或传递数据。从V8.2.0版本开始,FreeRTOS新增了任务通知这个功能,可以使用任务通知来代替信号量、消息队列、事件组等这些东西。任务通知的效率更高,因为它直接利用了FreeRTOS内核的内部数据结构,而无需额外的内存分配。任务通知的数据结构包含在任务控制块中,只要任务存在,任务通知数据结构就已经创建完毕,可以直接使用,而消息队列、信号量和事件组还需要单独建立各自的控制块来管理所有信息。

        任务通知主要用于任务之间的同步、事件信号传递和数据传递。每个任务都有一个专用的“任务通知值”,它可以用于存储一个32位的无符号整数,初始化为0,这个值可以作为一个计数器、标志位或简单的数据存储空间。 

        虽然任务通知在一定场合下可以代替消息队列、信号量、事件标志组,但任务通知也有一定的限制,如:①只能有一个任务接收通知消息,因为必须指定接收通知的任务;②只有等待通知的任务可以被阻塞,发送通知的任务,在任何情况下都不会因为发送失败而进入阻塞态。

二、相关API

        任务通知主要操作有发送任务通知获取任务通知

 1.发送任务通知的API

(1)xTaskNotifyGive()

        该函数可以作为二值信号量计数信号量的一种轻量型的实现,速度更快,在这种情况下对象任务在等待任务 293 通知的时候应该是使用函数ulTaskNotifyTake()

(2)vTaskNotifyGiveFromISR() 

        该函数是vTaskNotifyGive()的中断保护版本。 

(3)xTaskNotify() 

         xTaskNotify()用于在任务中直接向另外一个任务发送一个事件,接收到该任务通知的任务有可能解锁。

(4)xTaskNotifyFromISR()

        该函数是xTaskNotify()的中断保护版本。

(5)xTaskNotifyAndQuery() 

        该函数与xTaskNotify()很像, 不同的是多了一个附加的参数pulPreviousNotifyValue,用于回传接收任务的上一个通知值。

(6)xTaskNotifyAndQueryFromISR() 

        该函数是xTaskNotifyAndQuery()的中断版本。 

 2.获取任务通知的API

获取任务通知的API只能用在任务中,没有带中断保护版本,因此只有两个API 函数。

(1)ulTaskNotifyTake()

         该函数是为代替二值信号量计数信号量而专门设计的,它和发送通知API函数 xTaskNotifyGive()、vTaskNotifyGiveFromISR()配合使用。

(2)xTaskNotifyWait() 

        该函数是全功能版的等待通知,可以根据不同的参数实现轻量级二值信号量、计数信号量、事件组和长度为1 的队列。 

三、使用场景

1.代替消息队列

2.代替二值信号量

3.代替计数信号量

4.代替事件组

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

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

相关文章

【ELK】初始阶段

一、logstash学习 安装的时候最好不要有中文的安装路径 使用相对路径 在 Windows PowerShell 中,如果 logstash 可执行文件位于当前目录下,你需要使用相对路径来运行它。尝试输入以下命令: .\logstash -e ‘input { stdin { } } output { s…

详解23种设计模式——第一部分:概述+创建型模式

目录 1. 概述 2. 创建型模式 2.1 简单(静态)工厂模式 2.1.1 介绍 2.1.2 实现 2.2 工厂模式 2.3 抽象工厂模式 2.4 单例模式 2.4.1 饿汉模式 2.4.2 懒汉模式 2.4.3 线程安全的懒汉式 2.4.4 DCL单例 - 高性能的懒汉式 2.5 建造者模式 2.6 原…

kaptcha依赖maven无法拉取的问题

老依赖了,就是无法拉取,也不知道为什么,就是用maven一直拉去不成功,还以为是魔法的原因,试了好久发现不是,只好在百度寻求帮助了,好在寻找到了这位大佬的文章Maven - 解决无法安装 Kaptcha 依赖…

纯血鸿蒙!

纯血鸿蒙,这是哪个营销大师给起的名字啊! 纯血!象征着高贵、自信、自主、血性、英雄气概,都融入这纯血鸿蒙了! 鸿蒙本就是开天辟地,加上纯血,真是荡气回肠! 鸿蒙的推出背景 我们前…

Git安装与配置(2.47.0版本超详细)

一、背景 1.什么是gitt?(官网引用) Git 是一个快速、可扩展的分布式版本控制系统,它拥有异常丰富的命令集,可以提供高级操作和对内部的完全访问。 参阅 gittutorial[7] 开始使用,然后查看 giteveryday[7] …

ARM嵌入式学习--第四天

汇编与C混合编程 -汇编指令中调用C语言 .global _start _start:mov r0,#5mov r1,#3bl add stop:b stop int add(int a,int b) {int c a b;return c; } 无优化情况:(反汇编之后,发现多了很多很多指令,运行之后结果是错误的&a…

MySQL-19.多表设计-一对多-外键

一.多表问题分析 二.添加外键 三.外键约束的问题

SpringCloud无介绍快使用,单机Eureka服务注册中心cloud-eureka-server7001搭建(十)

TOC 问题背景 从零开始学springcloud微服务项目 注意事项: 约定 > 配置 > 编码IDEA版本2021.1这个项目,我分了很多篇章,每篇文章一个操作步骤,目的是显得更简单明了controller调service,service调dao项目源码以及…

单位评职称需要在指定媒体上投稿发表文章看我如何轻松应对

在职场中,晋升与评职称是一项不可或缺的任务,而在这个过程中,完成相关的投稿更是至关重要。作为单位的一名员工,当我得知自己需要在指定的媒体上发表文章以满足职称评审要求时,心中既期待又忐忑。起初,我选择了传统的邮箱投稿方式,然而却没想到,这条路竟让我倍感挫折。 刚开始,…

交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention轴承故障识别模型

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Transformer轴承故障一维信号分类(三)-CSDN博客 三十多个开源…

【Pycharm默认解释器配置文件】怎样删除配置解释器的无效历史记录?

有时候我们希望删除无效的解释器路径&#xff0c;可以找到这个文件&#xff0c;进行删除修改。 C:\Users\你的用户名\AppData\Roaming\JetBrains\PyCharm2022.3\options\jdk.table.xml直接删除解释器名称对应的一整个<jdk version"2">节点即可&#xff01; …

深度学习领域,你心目中 idea 最惊艳的论文是哪篇?

深度学习发展至今&#xff0c;共经历了三次浪潮&#xff0c;20 世纪40年代到60年代深度学习的雏形出现在控制论(cybernetics)中&#xff0c;20 世纪 80 年代 到 90 年代深度学习表现为 联结主义(connectionism)&#xff0c;直到 2006 年&#xff0c;才真正以深度学习之名复兴。…

电气学习知识点

文章目录 NPN和PNP输出 NPN和PNP输出 NPN和PNP&#xff08;两种不同类型的三极管&#xff09;都是集电极输出。&#xff08;集电极开路输出&#xff09; 下图b:基极、c集电极、e发射极 NPN示意图&#xff08;集电极连接负载 — 正方形&#xff09; NPN的电流流向是从集电极…

电子物证的数字化时代:龙信科技引领取证技术革新

文章关键词&#xff1a;电子物证、手机取证、云取证、介质取证、电子数据取证 在信息技术飞速发展的今天&#xff0c;电子物证在司法领域扮演着越来越重要的角色。电子物证是指以存储于介质载体中的电磁记录或光电记录对案件事实起证明作用的电子信息数据及其附属物。与传统物…

《云计算网络技术与应用》实训6-1:配置KVM虚拟机使用NAT网络

任务1、计算节点基础环境准备 1. 使用VMware安装CentOS 7虚拟机&#xff0c;安装时记得开启CPU虚拟化&#xff0c;命名为“KVMC6”。 2. &#xff08;网卡配置和之前的一样&#xff0c;都用100网段&#xff09;网关设置为192.168.100.1&#xff0c;地址段为192.168.100.10-25…

LeetCode 3200.三角形的最大高度:枚举

【LetMeFly】3200.三角形的最大高度&#xff1a;枚举 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-height-of-a-triangle/ 给你两个整数 red 和 blue&#xff0c;分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形&#xff0c;满足第 1 行…

Linux下内核空间和用户空间内存映射图详解

目录 一、简介二、内存空间定义三、内存权限四、内存空间映射图4.1 32位系统4.2 64位系统4.3 映射空间解析 五、其他相关链接1、关于linux下内存管理内容总结2、Linux内核中kzalloc分配内存时用的参数GFP_KERNEL详解3、Linux下stream内存带宽测试参数和示例详解附源码总结 一、…

HTTP cookie 与 session

一种关于登录的场景演示 - B 站登录和未登录 问题&#xff1a;B 站是如何认识我这个登录用户的&#xff1f;问题&#xff1a;HTTP 是无状态&#xff0c;无连接的&#xff0c;怎么能够记住我&#xff1f; 一、引入 HTTP Cookie 定义 HTTP Cookie&#xff08;也称为 Web Cooki…

如何区分不同类型的光源

" 声明&#xff1a;此文档中的大部分内容来源于网络&#xff0c;经校对和整理后分享给大家&#xff0c;仅供学习参考使用。" 1、问题背景 之前调试的项目中&#xff0c;客户提供的客观验收标准中要求用到TL83光源&#xff0c;用来测试图像的颜色误差及白平衡。 TL83光…

用Java爬虫API,轻松获取taobao商品SKU信息

在电子商务的世界里&#xff0c;SKU&#xff08;Stock Keeping Unit&#xff0c;库存单位&#xff09;是商品管理的基础。对于商家来说&#xff0c;SKU的详细信息对于库存管理、价格策略制定、市场分析等都有着重要作用。taobao作为中国最大的电子商务平台之一&#xff0c;提供…