OpenEdv-开源电子网

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

ucosii学习中消息邮箱的两点不解:

[复制链接]

19

主题

86

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2012-11-8
在线时间
0 小时
发表于 2012-12-25 16:19:17 | 显示全部楼层 |阅读模式
1.邮箱创建函数中 OSMboxCreate((void*)0),void* 是什么意思?
2.邮箱发送函数:
    i=1;
    OSMboxPost(Str_Box,&i); //发送消息1
   这个变量i 是局部变量,邮箱中传递的是其地址,在邮箱请求函数中接收消息(可以在另一个函数里用这个局部变量 i 吗??),因为局部变量是有生命周期的,会不会不正常,若是全局变量呢?
用我三生烟火,换你一世迷离
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-25 17:11:02 | 显示全部楼层
1,就是强制转换为void*类型.
2,这要看你局部变量什么时候丢失了,一般都是任务间信息传递.而任务,一般也都是一直存在的.比如A任务的i,发给B任务.这样就不会丢失.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

86

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2012-11-8
在线时间
0 小时
 楼主| 发表于 2012-12-26 09:03:51 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
嗯 多谢原子哥~
用我三生烟火,换你一世迷离
回复 支持 反对

使用道具 举报

3

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
104
金钱
104
注册时间
2012-12-25
在线时间
3 小时
发表于 2012-12-26 16:53:50 | 显示全部楼层
回复【楼主位】末班车:
1.邮箱创建函数中 OSMboxCreate((void*)0),void* 是什么意思?2.邮箱发送函数:    i=1;    OSMboxPost(Str_Box,&i); //发送消息1   这个变量i 是局部变量,邮箱中传递的是其地址,在邮箱请求函数中接收消息(可以在另一个函数里用这个局部变量 i 吗??),因为局部变量是有生命周期的,会不会不正常,若是全局变量呢?
---------------------------------
如果i在任务函数区域定义的,不会出现不正常,因为任务一直存在,i也不会释放,除非你的任务删掉。

在其他子函数内部定义的,那很可能会不正常。
回复 支持 反对

使用道具 举报

2

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
78
金钱
78
注册时间
2012-4-15
在线时间
0 小时
发表于 2012-12-26 20:51:28 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
恩 受教了
回复 支持 反对

使用道具 举报

19

主题

86

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2012-11-8
在线时间
0 小时
 楼主| 发表于 2012-12-27 12:09:05 | 显示全部楼层
回复【4楼】celticzy:
---------------------------------
嗯 多谢~
用我三生烟火,换你一世迷离
回复 支持 反对

使用道具 举报

4

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2015-4-18
在线时间
17 小时
发表于 2016-1-3 20:18:21 | 显示全部楼层
正点原子 发表于 2012-12-25 17:11
1,就是强制转换为void*类型.
2,这要看你局部变量什么时候丢失了,一般都是任务间信息传递.而任务,一般也都是 ...

原子哥,请教一个问题
1.任务A
u8 buff[50];
sprintf((char*)buff,"send a data %d",t);     //t 为A中的一个变量
OSMboxPost(my_Box,&buff);
任务B
char* s;
s=OSMboxPend(my_Box,10,&err);
串口打印出来的任务B中的s为什么是乱码???
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-1-3 21:00:18 | 显示全部楼层
仿真下,看看s的数据正常么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 04:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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