找回密码
 立即注册
查看: 344|回复: 3

二进制信号量的问题

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-01-27 23:56:26

6

主题

12

回帖

114

积分

注册会员

积分
114
发表于 2024-8-13 16:43:43 | 显示全部楼层 |阅读模式
想问下,我想用二进制信号量来作为任务运行的信号的话,为啥发送一次信号量,任务会运行多次?

比如,我创建了串口2的任务,
在定时器里做了接收判断,接收完成后给串口2任务发送二进制信号,
结果任务自己运行了很多次,什么情况
这里是接收完毕,发送了一次二进制信号量
截图202408131639417453.jpg
从这里表明,确实只发送了一次
截图202408131640514641.jpg

但是从任务运行状态来看,任务却是运行了很多次
这是任务代码
截图202408131641422717.jpg

这是运行效果
截图202408131642446296.jpg

等待一次信号,运行了很多次,
各位大佬帮分析一下,是什么问题,还是说这个二进制信号量不能这么用?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-01-27 23:56:26

6

主题

12

回帖

114

积分

注册会员

积分
114
发表于 2024-8-13 16:46:41 | 显示全部楼层
我把等待改为获取就没问题了

点评

是的,“获取” 才是 常规 的用法,“等待” 是 特殊应用。 等待 是 仅give一次,wait 的任务便可无限次的周期运行,通过 lock 可终止该任务的运行。 对于 串口的应用,可考虑 定时中断/查询 功能,这样可以节约一个  详情 回复 发表于 2024-8-14 02:25
回复 支持 2 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-8-14 02:25:56 | 显示全部楼层
吃了只*** 发表于 2024-8-13 16:46
我把等待改为获取就没问题了

是的,“获取” 才是 常规 的用法,“等待” 是 特殊应用。
等待 是 仅give一次,wait 的任务便可无限次的周期运行,通过 lock 可终止该任务的运行。
对于 串口的应用,可考虑 定时中断/查询 功能,这样可以节约一个硬件定时器,具体应用可参照 工程模板 中的 test_xwtb_group.c。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2025-01-27 23:56:26

6

主题

12

回帖

114

积分

注册会员

积分
114
发表于 2024-8-14 17:00:48 | 显示全部楼层
Cos*** 发表于 2024-8-14 02:25
是的,“获取” 才是 常规 的用法,“等待” 是 特殊应用。
等待 是 仅give一次,wait 的任务便可无限次 ...

好的,谢谢,我现在串口任务是改为挂起自身,定时中断检测到接收超时后恢复任务
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:04 , Processed in 0.237111 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表