F2812 DSP CCS 编译,结构体成员为指针,竟然传递不进来。。。

[复制链接]
 楼主| zealane 发表于 2008-1-8 10:35 | 显示全部楼层 |阅读模式
struct&nbsp;QueueBuffer{<br />&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;*aBufferStart;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;*aBufferEnd;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;*pIn;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;*pOut;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;mCount;<br />};<br /><br />struct&nbsp;QueueBuffer&nbsp;*Queue_Register(Uint16&nbsp;*pQueueBufArry,unsigned&nbsp;int&nbsp;&nbsp;mSize)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;QueueBuffer&nbsp;*pQueueBuffer;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uint16&nbsp;sQueue_size;<br />&nbsp;&nbsp;&nbsp;&nbsp;//分配记录队列信息的结构变量<br />&nbsp;&nbsp;&nbsp;&nbsp;pQueueBuffer=(struct&nbsp;QueueBuffer&nbsp;*)Memory_Malloc(sizeof(struct&nbsp;QueueBuffer));&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;sQueue_size=sizeof(struct&nbsp;QueueBuffer);<br />&nbsp;&nbsp;&nbsp;&nbsp;//记录队列信息的结构变量清0<br />&nbsp;&nbsp;&nbsp;&nbsp;Memory_Memset((unsigned&nbsp;char&nbsp;*)&nbsp;pQueueBuffer,0,sQueue_size);<br /><br />//分配队列所需内存,这里使用编译器自动分配的内存<br />&nbsp;&nbsp;&nbsp;&nbsp;pQueueBuffer-&gtaBufferStart=pQueueBuffer-&gtpIn=pQueueBuffer-&gtpOut=pQueueBufArry;<br />&nbsp;&nbsp;&nbsp;&nbsp;//队列结束指针<br />&nbsp;&nbsp;&nbsp;&nbsp;pQueueBuffer-&gtaBufferEnd=pQueueBuffer-&gtaBufferStart+mSize;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;pQueueBuffer;<br />}<br />看这句话<br />pQueueBuffer-&gtaBufferStart=pQueueBuffer-&gtpIn=pQueueBuffer-&gtpOut=pQueueBufArry;<br />在这个语句中,&nbsp;pQueueBufArry的值是0x00010003,但是给pQueueBuffer-&gtaBufferStart&nbsp;&nbsp;aBufferStart=pQueueBuffer-&gtpIn赋值之后,pQueueBuffer-&gtaBufferStart变成0x00030001.。。。。不知道为什么赋值不对?<br /><br />
 楼主| zealane 发表于 2008-1-8 10:47 | 显示全部楼层

感觉是高8位和低8位交换了位置。。。。

  
DSP动力 发表于 2008-1-8 20:35 | 显示全部楼层

忌讳这种写法

pQueueBuffer-&gtaBufferStart=pQueueBuffer-&gtpIn=pQueueBuffer-&gtpOut=pQueueBufArry;<br /><br />分成3步付值,结构清晰要简单;<br />这种写法付值先后次序不明朗,以后移植也是问题。<br />
 楼主| zealane 发表于 2008-1-8 22:14 | 显示全部楼层

这个是初始化里的。只在开头调用一次。

关键不是这个原因。也分步试过,但是还是传递变错。。。<br />本人对汇编又不是很了解,所以很郁闷。。。不知道是什么原因
liudewei 发表于 2008-1-12 17:52 | 显示全部楼层

语法的问题

*pQueueBuffer-&gtaBufferStart=*pQueueBuffer-&gtpIn=*pQueueBuffer-&gtpOut=*pQueueBufArry
 楼主| zealane 发表于 2008-1-14 14:39 | 显示全部楼层

这是什么语法?

*pQueueBuffer-&gtaBufferStart=*pQueueBuffer-&gtpIn=*pQueueBuffer-&gtpOut=*pQueueBufArry<br /><br />我要的是传递指针值,你的这句只是将pQueueBufArry指针指向的存储区内容赋给前面变量啊。。
hitajian 发表于 2008-1-17 23:14 | 显示全部楼层

工程贴上来看看

我用你的程序简单做了个工程,看结果是对的.<br />把你的工程打包上来看看,可能是别的原因造成的.
 楼主| zealane 发表于 2008-1-19 20:36 | 显示全部楼层

那就奇怪了???

  
ghostvip 发表于 2011-7-18 13:16 | 显示全部楼层
我遇到了同样的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

249

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部