信号量可以手动清零吗?

发布于 2019-09-01 09:40:55
在项目中使用红外遥控,采用中断的方式接收数据。


在中断中,接收完数据后有一个释放信号量的动作,然后在线程A中FOREVER等待信号量,获取到信号量后执行相应操作。


但是有一个问题是,由于遥控按键存在抖动,每按一次其实相当于按了好几次,且这个抖动次数还不是固定的,造成遥控不准确。


所以就打算每次线程A获取到信号量后,执行一个信号量清零的操作,或许能解决这个问题。

线程A中采用固定延时的方式可以消除这种抖动,但是由于遥控不是很频繁使用,不希望线程A一直在运行,消耗系统资源。

或者有别的消抖方式能够实现也好。

麻烦大神们指点。

查看更多

关注者
0
被浏览
482
2 个回答
bernard
bernard 2019-09-01
可以的,只是有些绕,

int value = 0; // 或者其他需要的值

rt_sem_control(sem, RT_IPC_CMD_RESET, (void*)value);
Glen_Young
Glen_Young 2019-09-01
bernard 发表于 2019-9-1 11:43
可以的,只是有些绕,

int value = 0; // 或者其他需要的值


好的,谢谢

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友