OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3383|回复: 3

关于 RTT事件 的操作实验的问题,test_event->set清0的顺序的问题

[复制链接]

36

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
515
金钱
515
注册时间
2015-8-3
在线时间
142 小时
发表于 2018-12-29 09:43:51 | 显示全部楼层 |阅读模式
1金钱
今天根据RTT基于STM32的书,自己写了一个简单的程序来试验一下  rtt事件 ,主函数就放了两个线程,一个产生事件的线程10(优先级2),一个接收事件的线程11(优先级3),然后试验结果如图

那么问题来了,接收事件线程11在等待两个事件(与)都发生了,才能从挂起到唤醒,而且发送事件线程10的优先级比线程11高,那么我先按下按键1,再按下按键2,那么,在按键2之后test_event->set应该还是等于两个事件(event1|event2)的才对啊?为什么会等于0?我程序是选择接收到事件之后清0的,但那不是应该在接收线程11才执行清0的吗? 求解下。。。
微信截图_20181229091318.png

f429rtt_移植_.rar

9.65 MB, 下载次数: 6

最佳答案

查看完整内容[请看2#楼]

1. 建议对问题分好段落。 2. 日志建议打印得更简介明了一些,%X前面一定要写上这个变量名。以方便阅读。 3. 因为有 RT_EVENT_FLAG_CLEAR ,所以已经被清除了。 看代码 4.学习阶段可以阅读代码看,使用上,请不要直接引用 event 结构中的任何成员。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

1041

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3696
金钱
3696
注册时间
2011-5-23
在线时间
2008 小时
发表于 2018-12-29 09:43:52 | 显示全部楼层
本帖最后由 aozima 于 2019-1-1 15:23 编辑

1. 建议对问题分好段落。

2. 日志建议打印得更简介明了一些,%X前面一定要写上这个变量名。以方便阅读。

3. 因为有 RT_EVENT_FLAG_CLEAR ,所以已经被清除了。
看代码
  1.             /* condition is satisfied, resume thread */
  2.             if (status == RT_EOK)
  3.             {
  4.                 /* clear event */
  5.                 if (thread->event_info & RT_EVENT_FLAG_CLEAR)
  6.                     event->set &= ~thread->event_set;
  7.                 //这里直接清了

  8.                 /* resume thread, and thread list breaks out */
  9.                 rt_thread_resume(thread);
  10.                 //这里恢复线程,但11优先级低,所以状态不变

  11.                 /* need do a scheduling */
  12.                 need_schedule = RT_TRUE;
  13.                 //这里虽然会申请切换,但如上,状态并不变,所以继续运行send,直到delay时才会去运行recv
  14.             }
复制代码

4.学习阶段可以阅读代码看,使用上,请不要直接引用  event 结构中的任何成员。

RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-12-31 01:05:04 | 显示全部楼层
帮顶
回复

使用道具 举报

36

主题

87

帖子

0

精华

高级会员

Rank: 4

积分
515
金钱
515
注册时间
2015-8-3
在线时间
142 小时
 楼主| 发表于 2019-1-2 16:15:12 | 显示全部楼层
aozima 发表于 2019-1-1 15:22
1. 建议对问题分好段落。

2. 日志建议打印得更简介明了一些,%X前面一定要写上这个变量名。以方便阅读。 ...

好的,谢谢~
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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