初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2013-7-5
- 在线时间
- 8 小时
|
5金钱
UCOSII的消息邮箱深度为1,就是说消息邮箱在同一时刻只能被一个消息占用。今天想尝试下在任务中连续发送三个消息数据(每个消息为一个字节)给消息邮箱会怎么样,按道理来讲应该只能接收到第一个消息,第二、第三个消息应该会返回错误代码0x20(消息邮箱满)。可是,奇迹来了,第一、第二个消息正常接收,第三个消息返回错误代码0x14。
代码如图中所示:建立两个任务,任务一等待消息邮箱并将消息通过串口发送,任务二查询按键,有按键按下,则连续发送三个消息,每个消息发送失败后抢先通过串口发送错误代码。结果串口助手接收到:0x14(第三个消息的错误代码),0x01(按键码值),0x01(按键码值),说明在任务二中前两个消息发送成功,第三个消息发送失败,且出错代码为0x14。
我的问题是:1.消息邮箱一次只能接收一个消息,为什么发送两个消息都能收到;
2.出错代码应该是0x20(邮箱满),为什么实际返回0x14(OS_ERR_PEND_ABORT)。
|
|