OpenEdv-开源电子网

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

stm32 mini 扩展实验17 UCOSII消息邮箱测试 有段代码不懂 求助

[复制链接]

8

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-5-27
在线时间
6 小时
发表于 2013-11-9 16:56:21 | 显示全部楼层 |阅读模式
 //任务3
//按键测试 
 void TaskKey(void *pdata)
 {
  u8  key=0,i=0;
   
    while(1){
 key=KEY_Scan();
 if(key==1) 
 {
    i=1;
  OSMboxPost(Str_Box,&i); //·发送消息1
 }
 else if(key==2)
 {
  i=2;
  OSMboxPost(Str_Box,&i); //发送消息22
   
 }
 else if(key==3)
 {
  i=3;
  OSMboxPostOpt(Str_Box,&i,OS_POST_OPT_BROADCAST); //向所有任雾广播消息3
   }
 OSTimeDlyHMSM(0,0,0,20);  
}
 }


//任务1
//控制ds0亮灭
void TaskLed(void *pdata)
{ u8 result=0;
while(1)
{ result= *((u8 *)OSMboxPend(Str_Box,0,&err)); //???ó????????
if(result ==1||result ==3){ 
 LED0=!LED0;
}
OSTimeDlyHMSM(0,0,0,200);
}
}
key=0时 就是板子上的key0键“  if(result ==1||result ==3){ ” 为什么 没反应

留下的终将被留下 明天的总是被明天
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-9 18:30:54 | 显示全部楼层
回复【楼主位】ceeu:
---------------------------------
谢谢指出这个问题。
这个问题是这样的,有2个任务请求邮箱:
//任务1
//控制DS0的亮灭.
void TaskLed(void *pdata)
{ u8 result=0;
while(1)
{ result= *((u8 *)OSMboxPend(Str_Box,0,&err)); //请求消息邮箱
if(result ==1||result ==3){ 
  LED0=!LED0;
}
OSTimeDlyHMSM(0,0,0,200);
}
}
//任务2
//控制DS1的亮灭.
void TaskLed1(void *pdata)
{ u8 result=0;
while(1)
{   result= *((u8 *)OSMboxPend(Str_Box,0,&err));//请求消息邮箱 
    if(result ==2||result ==3){ 
   LED1=!LED1;
}
OSTimeDlyHMSM(0,0,0,200);
}
}
任务2的优先级比任务1高。
当两个任务都进入无限等待的时候,任务2具有优先请求的特质,所以当TaskKey任务,通过OSMboxPost(Str_Box,&i); //发送消息1
的时候,任务2优先获取这个邮件,但是任务2,没有对1进行处理,所以直接丢弃。
而任务1,由于邮箱被任务二用了,故而得不到运行的条件,所以只能接着无限等待。

而OSMboxPostOpt(Str_Box,&i,OS_POST_OPT_BROADCAST); //向所有任务广播消息3
是可以向所有任务广播消息,所以任务1,任务2,都可以收到。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-5-27
在线时间
6 小时
 楼主| 发表于 2013-11-10 01:03:32 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
哦 谢谢解析 是不是所有非所有任务广播消息 只能由一个优先级高的任务获取一次完事就丢弃其他任务就都不能获取了?
留下的终将被留下 明天的总是被明天
回复 支持 反对

使用道具 举报

8

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2013-5-27
在线时间
6 小时
 楼主| 发表于 2013-11-10 01:27:57 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
理解点; 了 谢谢
留下的终将被留下 明天的总是被明天
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-9 10:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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