OpenEdv-开源电子网

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

UCOSII实验3里面OSMboxPost(msg_key,(void*)key);key前面没有&取地址符号?

[复制链接]

10

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-12-3
在线时间
0 小时
发表于 2014-5-14 09:46:35 | 显示全部楼层 |阅读模式
5金钱
原子哥 你的UCOSII实验3里面有发送邮箱的
u8 key;
OSMboxPost(msg_key,(void*)key);我查看原函数 着发送的应该是地址才是 可是你这里没有取地址符号啊?

还有
u32 key;
key=(u32)OSMboxPend(msg_key,10,&err); 函数原型是返回指针,你这样赋值 实验也能跑成功。所以有疑问。
一般是这样的吧*(u32 *)OSMboxPend(msg_key,10,&err)。

最佳答案

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

发送端,直接将key的值当成地址传送。。。 接收端,直接获取地址,就当成值。
不用谢了……
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2014-5-14 09:46:36 | 显示全部楼层
发送端,直接将key的值当成地址传送。。。
接收端,直接获取地址,就当成值。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-5-14 13:09:31 | 显示全部楼层
还没研究好,只能帮顶
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

86

主题

982

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1846
金钱
1846
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-7-10 16:38:23 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
卧槽   竟然有人跟我一样的疑问。佩服原子哥!原子哥真会简化处理过程!mark,终于学会ucosII的基本使用了,任哲那本书可把我看的累死了
合肥-文盲
回复

使用道具 举报

86

主题

982

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1846
金钱
1846
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-7-10 16:48:14 | 显示全部楼层
回复【2楼】八度空间:
---------------------------------
八度空间就爱谦虚,哈哈
合肥-文盲
回复

使用道具 举报

2

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2016-12-24
在线时间
22 小时
发表于 2017-9-22 11:54:05 | 显示全部楼层
太好了,我一直在思考这个问题。终于弄明白了。原来用post发送的是地址还是值并不重要,反正pend都是原封返回。
回复

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2018-12-3 16:01:51 | 显示全部楼层
outmanlol 发表于 2017-9-22 11:54
太好了,我一直在思考这个问题。终于弄明白了。原来用post发送的是地址还是值并不重要,反正pend都是原封返 ...

没看明白,这个我也一样的疑问
回复

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2018-12-3 16:11:53 | 显示全部楼层
正点原子 发表于 2014-5-14 09:46
发送端,直接将key的值当成地址传送。。。
接收端,直接获取地址,就当成值。

key=(u32)OSMboxPend(msg_key,10,&err);
这个到底啥情况,说的没看明白啊
回复

使用道具 举报

6

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2018-8-31
在线时间
115 小时
发表于 2018-12-3 16:38:14 | 显示全部楼层
正点原子 发表于 2014-5-14 09:46
发送端,直接将key的值当成地址传送。。。
接收端,直接获取地址,就当成值。

接收函数返回的是 pmsg;
可是void      *pmsg;是个指针啊,为啥打印出来是key的值呢
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-3-5
在线时间
4 小时
发表于 2019-3-5 14:22:13 | 显示全部楼层
长昵称不被占用 发表于 2018-12-3 16:38
接收函数返回的是 pmsg;
可是void      *pmsg;是个指针啊,为啥打印出来是key的值呢

OSMboxPost(msg_key,(void*)key)   这个是post  函数    (void*)  强制将key的值转化为指针    那么返回的pmsg就是key的值   所以获取函数是这样的(u32)OSMboxPend(msg_key,10,&err)   这里有一个问题  就是key不能为0    指针为0 参数检查会出错   
     如果我们是OSMboxPost(msg_key,&key)   就是将key的内存地址作为指针     那么我们的接收函数应该是这样的*(u32*)OSMboxPend(msg_key,0,&err);   先将返回结果强制转化为u32指针   再用取值符号*取值    这样不存在指针为0的情况
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-3-5
在线时间
4 小时
发表于 2019-3-5 14:33:07 | 显示全部楼层
合肥-文盲 发表于 2015-7-10 16:38
回复【3楼】正点原子:
---------------------------------
卧槽   竟然有人跟我一样的疑问 ...

这个简化 就是  void*)那个值不能0
回复

使用道具 举报

5

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2017-12-23
在线时间
76 小时
发表于 2022-5-2 18:54:08 | 显示全部楼层
我靠,原来是这样,困扰了好久
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 08:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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