你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

FreeRTOS 中的 信号量和任务通知 使用时有什么区别

[复制链接]
AI++ 提问时间:2018-7-11 08:40 /
最近在做 任务间 变量交互操作,
发现 一个中断中直接编辑的 变量值 在另一个中断任务中总是无法正常判断,调试得很郁闷,
于是想到了是不是  应该用 任务间的信号传递,
那么
如果把每个中断写成一个任务,  使用二值信号量传递比较好呢还是任务通知比较好?或者是互斥量?

信号量和任务通知 这两种方式 使用时有哪些区别


收藏 评论3 发布时间:2018-7-11 08:40

举报

3个回答
jakecumt 回答时间:2018-7-12 09:48:37
任务通知
一定程度上可以替代二值信号量、计数信号量、事件组或队列。任务通知优点:更快、占用RAM少
任务通知缺点:数据不能从任务发送到ISR(也就是ISR中不能读取任务通知);接收处理任务通知只能在本任务中;任务通知只能通过32位无符号整数传递数据;当任务为“pending”,发送任务通知API不会等待任务变为“not-pending”而阻塞,也就是数据可能丢失
信号量 包含二值信号量和计数信号量,我一般用二值信号量,很少用计数信号量

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

AI++ 回答时间:2018-7-13 10:00:31
本帖最后由 50031185 于 2018-7-13 10:33 编辑
jakecumt 发表于 2018-7-12 09:48
任务通知
一定程度上可以替代二值信号量、计数信号量、事件组或队列。任务通知优点:更快、占用RAM少
任务 ...

请问你说的"" 发送任务通知API不会等待任务变为“not-pending”而阻塞,也就是数据可能丢失""

这个情况是说当等待接收通知的任务挂起时(就是已经收到了一个通知等待执行时) ,就无法接收通知,此时别的任务再发的通知就会丢失吗?

xiaojie0513 回答时间:2018-7-14 17:28:40
正如楼上所说,可以使用任务通知,按照你的情况是传递一个变量的,二值信号量会用在任务与任务,中断与任务间的同步,所以使用也行,等在中断改变了数值的时候,可以告诉任务可以读取数值的就ok了,但是你也可以使用互斥信号量,都是差不多的,而互斥信号量有优先级继承(具体可以学习一下FreeRTOS相关的知识,简单的几句话说不清楚的),或者是使用队列,就定义一个数值的队列,进行数据的传输,最方便的应该就是任务通知了。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版