5-事件组&任务通知
获取某个事件
获取若干事件中的某个事件
获取若干事件中的全部事件
!!!!不可获得若干事件中的几个事件
创建事件组,设置事件,等待事件
static EventGroupHandle_t xEventGroupCalc;
/* 创建事件组 */
xEventGroupCalc = xEventGroupCreate();
xEventGroupSetBits(xEventGroupCalc, (1<<0)); xEventGroupWaitBits(xEventGroupCalc, (1<<0)|(1<<1), pdTRUE, pdTRUE, portMAX_DELAY);
//哪个组,等待哪些事件,返回前是否清除事件,是否要等待前面设置的所有事件【否的话当一个来的时候就处理】,不满足的话等多久
同步点: ABC三个任务需要全部都完成才算完成,才能走下一步
a<<4 指把a的各二进位向左移动4位

#define TABLE (1<<0)
#define BUYING (1<<1)
#define COOKING (1<<2)
#define ALL (TABLE | BUYING | COOKING)
/* 表示我做好了, 还要等别人都做好 */
xEventGroupSync(xEventGroup, COOKING, ALL, portMAX_DELAY);
(哪个时间组,我做的什么事件,需要等哪些事件,等多久)
static void vCookingTask( void *pvParameters )
{
const TickType_t xTicksToWait = pdMS_TO_TICKS( 100UL );
int i = 0; /* 无限循环 */
for( ;; )
{
/* 做自己的事 */
printf("%s is cooking %d time....\r\n", (char *)pvParameters, i); /* 表示我做好了, 还要等别人都做好 */
xEventGroupSync(xEventGroup, COOKING, ALL, portMAX_DELAY); /* 别人也做好了, 开饭 */
printf("%s is eating %d time....\r\n", (char *)pvParameters, i++);
vTaskDelay(xTicksToWait);
}
}
事件组起通知作用,数据的保存还需要你另外想办法,比如使用队列
任务通知
使用任务通知时,就是“通知任务”,目标明确。发送者.接收者是多对1的关系。


左侧的两个任务发通知(都不等待【因为不像队列那样有等待的链表】)给右边的任务(等待),右边任务的TCB控制块里面有别的任务通知的值,也有自己的状态,
当接收到通知的值时,改变状态值,返回
没有收到通知时,可以等待

简易使用
xTaskNotifyGive(xHandleTask2);
//让Task2 TCB控制块 里面的value++ val = ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
//获取TCB里面的value值,pdTRUE返回时使value=0,pdFALSE使value--(都不影响返回的value)
//使value=0 只能take1次,然后’阻塞‘,相反使用-- 能take N次
12-1未完待续

3的取值有


有多次通知时,是否覆盖之前的通知(不覆盖的话,发送数据不成功) 具体见后文的【任务通知-轻量型队列】
4在函数入口处清除几个位
5在函数出口处清除几个位,设置为0则不清除
6 *pul=value在出口被清除前的value,就是别人发消息附带的值
实操: 对于信号量发送次数与接收次数对应, 那对于任务通知的话,是如何对应的呢


任务通知-轻量型队列

问题:那两个参数如何使用呢
任务通知-轻量级事件组
之前的事件组是改变了某些位,当满足条件时,目标任务才能被唤醒
而任务通知则时,只要任务通知的时候设置了某些位,不管满不满足条件,都会唤醒目标任务

不同的任务通知,可以设置相同的任务TCB里面的VALUE

12-4OVER
5-事件组&任务通知的更多相关文章
- OneAlert 入门(四)——事件分派和通知必达
OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性.有了 OneAlert,你可以更快更合理地为事件划分 ...
- C#代码:用事件模式实现通知
事件提供了一种标准的机制来通知监听者..NET的事件模式使用了事件语法来实现观察者模式.任意数量的客户对象都可以将自己的处理函数注册到事件上,然后处理这些事件.这些客户对象不需要再编译期就给出.时间也 ...
- IntelliJ IDEA(四) :Settings【Appearance and Behavior】
前言 IDEA是一个智能开发工具,每个开发者的使用习惯不同,如何个性化自己的IDEA?我们可以通过Settings功能来设置.Settings文件是IDEA的配置文件,通过他可以设置主题,项目,插件, ...
- IntelliJ IDEA(四) :Settings(上)
前言 IDEA是一个智能开发工具,每个开发者的使用习惯不同,如何个性化自己的IDEA?我们可以通过Settings功能来设置.Settings文件是IDEA的配置文件,通过他可以设置主题,项目,插件, ...
- FreeRTOS笔记
任务的创建和删除(静态方法) 任务创建后要开启调度器. FreeRTOSConfig.h 1. 改宏 使能静态创建函数. 会出现,有两个函数未定义. Cortex-M中断管理(上) NVIC:嵌套向量 ...
- FreeRTOS任务基础概念
RTOS系统的核心就是任务管理: 任务的特性 在RTOS中每个任务都有自己的运行环境,不依赖于系统中其他的任务或者调度器,任何一个时间点只能有一个任务运行,具体运行哪个任务是由任务调度器来决定的,而任 ...
- 不可被忽视的操作系统( FreeRTOS )【1】
把大多数人每个星期的双休过过成了奢侈的节假日放假,把每天23点后定义为自己的自由时间,应该如何去思考这个问题 ? 双休的两天里,不!是放假的两天里,终于有较长的时间好好的学习一下一直断断续续的Free ...
- 【FreeRTOS学习03】小白都能懂的Task Management 任务管理基本概念介绍
在FreeRTOS中,线程的术语又可以被称之为任务,或许这样更加合适,本文将介绍任务的创建/删除,任务参数的使用,以及任务优先级: 1 软实时和硬实时 硬实时系统的任务运行正确性与响应时限是紧密相关的 ...
- FreeRTOS-00-基础知识+任务创建删除
1 说明 本文仅作为学习FreeRTOS的记录文档,作为初学者肯定很多理解不对甚至错误的地方,望网友指正. 1.1 简介 FreeRTOS是一个RTOS(实时操作系统)系统,支持抢占式.合作式和时间片 ...
- FreeRTOS学习笔记——FreeRTOS 任务基础知识
RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建 ...
随机推荐
- 百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]
相关文章: 基础知识介绍: [一]ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?_汀.的博客-CSDN博客_ernie模型 百度飞桨: ...
- 零基础入门学习Java课堂笔记 ——day05
面向对象(上) 面向过程:我打算列个计划表一步一步来 面向对象:我喜欢先分析分类,把复杂的问题简单化 1.什么是面向对象!!? 面向对象的本质就是:以类的方式组织代码,以对象的方式组织数据 封装 继承 ...
- IDE 不用鼠标 向下选择
- ASP.NET Core分布式项目实战(客户端集成IdentityServer)--学习笔记
任务9:客户端集成IdentityServer 新建 API 项目 dotnet new webapi --name ClientCredentialApi 控制器添加验证 using Microso ...
- [Java] 详细解说final关键字
final final 可以修饰变量.方法和类,表示所修饰的内容一旦赋值之后就不会再被改变.例如String类就是一个final类型的类. 1.具体使用场景 1.1 变量 1.1.1 成员变量 每个类 ...
- PCG——程序化地形生成(1)
前言 接触了半年多Houdini,佛系研究了一下PCG(Procedural Content Generation)相关的技术,这真是个好东西,赶在年前写个总结.Houdini 一款DCC软件,功能又 ...
- JOISC 2023 纪录
记录一下 JOISC 2023 的做题记录 Day1 T1 Two Currencies 给定一棵树,在边上有总计 \(m\) 个检查站,经过一个检查站需要叫 \(1\) 枚金币或者若干枚银币.\(Q ...
- JS 前序遍历、中序遍历、后序遍历、层序遍历详解,深度优先与广度优先区别,附leetcode例题题解答案
壹 ❀ 引 按照一天一题的速度,不知不觉已经刷了快两多月的leetcode了,因为本人较为笨拙,一道简单的题有时候也会研究很久,看着提交了两百多次,其实也才解决了70来道简单题,对于二分法,双指针等也 ...
- NC26212 小石的签到题
题目链接 题目 题目描述 小石和小阳玩游戏,一共有 \(n\) 个数,分别为 \(1 \sim n\) .两人轮流取数,小石先手.对于每轮取数,都必须选择剩下数中的任意一个数 \(x\) ,同时还要取 ...
- NC201613 Jelly
题目链接 题目 题目描述 Nancy喜欢吃果冻! Nancy钻进了一个 \(n \times n \times n\) 的果冻里,她想从(1,1,1)一路上.下.左.右.前.后六个方向吃到(n,n,n ...