电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
CUBE生成的FreeRTOS中osSignalWait问题
已解决
73482
个问题
已帮助
5993
位优秀工程师
CUBE生成的FreeRTOS中osSignalWait问题
apleilx
2018-08-08
浏览量:2605
CUBE生成的工程包含FreeRTOS 里面的任务通知接口osSignalWait()在接收到事件后不会自动清除已处理的位,也没有清除函数,怎么解决?
显示全部
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
Angel_YY
正常情况下,调用osSignalWait之后会把信号复位,如果后面还有信号被置位,线程就可以继续执行,你可以读osEvent.value.signals的值来获取哪个标志被置位。任何一个线程都可以置位或清除另外一个线程的信号:
int32_t osSinalSet(osThreadId thread_id int32_t signals);
int32_t osSignalClear(osThreadId thread_id int32_t signals);
发布于
2018-08-08
举报
评论 1
0
0
apleilx
回复了 Angel_YY:之前用RTX的时候确实会自动清除。但ST这个FreeRTOS并没有清除,刚开始以为发送信号量的程序有问题,后来测试发放任务只发一次,然后用osDelay阻塞掉,接收信号量的任务竟然一直有信号,才知道它是没自动清除的。另外freeRTOS的osSignalClear函数不可用。
回复
其他答案
数量:
3
chen0000009
使用命令osSignalClear是可以清除信号的,这个是freertos自带的功能,怎么会不可用
发布于
2018-08-10
举报
评论 0
0
0
勇哥来巡山
这个可以用ossignalclear清除信号,你要检查一下你的这个指令是否使用正确
发布于
2018-08-11
举报
评论 0
0
0
喵不是好兔纸
直接用OSSingnalClaer这个指令就可以清楚信号,看看是不是你的使用方法有问题
发布于
2018-08-17
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
CUBE生成的FreeRTOS中osSignalWait问题
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: