吃了只脆皮鸡 发表于 2024-8-13 16:43:43

二进制信号量的问题

想问下,我想用二进制信号量来作为任务运行的信号的话,为啥发送一次信号量,任务会运行多次?

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

从这里表明,确实只发送了一次


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


这是运行效果


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

吃了只脆皮鸡 发表于 2024-8-13 16:46:41

我把等待改为获取就没问题了{:4_167:}

CosyOS 发表于 2024-8-14 02:25:56

吃了只脆皮鸡 发表于 2024-8-13 16:46
我把等待改为获取就没问题了

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

吃了只脆皮鸡 发表于 2024-8-14 17:00:48

CosyOS 发表于 2024-8-14 02:25
是的,“获取” 才是 常规 的用法,“等待” 是 特殊应用。
等待 是 仅give一次,wait 的任务便可无限次 ...

好的,谢谢,我现在串口任务是改为挂起自身,定时中断检测到接收超时后恢复任务
页: [1]
查看完整版本: 二进制信号量的问题