二进制信号量只有0和1,两个任务公用一个信号量,一个任务用于产生信号量(即对信号量+1),另一个任务使用此信号量(即对信号量-1)。
使用二进制信号量,需要创建一个二进制信号量,而任务通知就不需要创建。
任务通知只能用于指定的任务,如果有多个接收方,将无法替代二进制信号量。
比如有三个马达ABC,每次只运行1个马达,另外两个做备份,但要求三个马达使用频率得差不多,不能每次都使用A马达,此时如果用任务通知,就有三个接收方,每次都通知给A马达,BC永远不会运转到,将无法实现。 API:
xTaskNotifyGive();//命令含义,相当于上篇精简化的 xTaskNotify() + eIncrement。就是将Notifacation的值累加1
举例:
用按键控制LED灯亮灭。按键任务中当按下按键时,用xTaskNotifyGive()将Notifacation的值加1,另一个任务中用ulTaskNotifyTake等待Notifacation变为1后,执行完任务后再重置0.
审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
led灯
+关注
关注
22文章
1422浏览量
106556 -
二进制
+关注
关注
2文章
598浏览量
40940 -
按键控制器
+关注
关注
0文章
8浏览量
6369
发布评论请先 登录
相关推荐
Mindows操作系统更新到4.7节,增加二进制信号量功能
二进制信号量功能某些资源在同一时刻只可以被一个任务操作,实时操作系统的任务抢占特性会导致这些资源可能被多个任务同时操作,从而产生错误。从本节将讲述
发表于 11-17 21:45
请求信号量是什么意思?
信号量相当于变量,下面有几点疑问1.下图是OSSemCreate();函数创建信号量,创建一个二进制信号量将初始值置1,那么运行OSSemPost();信号量加一,
发表于 09-27 04:35
信号量和互斥信号量的相关资料分享
二进制信号量理解为java里的独享锁,计数形的看成类似于共享锁。信号量API函数OSSemCreateOSSemDel关于opt(我理解为模式),在源码的上面说明了。本人英语不太行。大概翻译过来就是这个意思,,,emm,,用大白话讲,就是,第一种用模式的话,只有需要信号量的任务都跑完了,它
发表于 03-02 07:11
FreeRTOS高级篇6---FreeRTOS信号量分析
信号量包括二进制信号量、计数信号量、互斥信号量(以后简称互斥量)和递归互斥信号量(以后简称递归互斥量)。关于它们的区...
发表于 01-26 17:39
•7次下载
FreeRTOS高级篇5---FreeRTOS队列分析
任务间通讯方式,包括:任务通知(版本V8.2以及以上版本)队列二进制信号量计数信号量互斥量递归互斥量其中,二进制...
发表于 01-26 17:40
•7次下载
FreeRTOS系列第20篇---FreeRTOS信号量API函数
信号量包括二进制信号量、计数信号量、互斥信号量(以后简称互斥量)和递归互斥信号量(以后简称递归互斥量)。我们可以把互...
发表于 01-26 17:44
•4次下载
FreeRTOS的二值信号量
信号量是一种任务间通信的方式,信号量包括:二值信号量、互斥信号量、计数信号量,本次实验只使用二值信号量。信号量用于任务间的同步,FreeRTOS是多任务系统,不同
Free RTOS的互斥信号量
二进制信号量和互斥量非常相似,但确实有一些细微的区别。互斥体包含优先级继承机制,而二进制信号量没有。这使得二进制信号量成为实现同步(任务之间或任务与中断之间)的更好选择,互斥体成为实现简单互斥的更好选择。
评论