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

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

[复制链接]
50031185 提问时间: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

查看全部评分

50031185 回答时间: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版