zealane 发表于 2008-1-8 10:35

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

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

我遇到了同样的问题
页: [1]
查看完整版本: F2812 DSP CCS 编译,结构体成员为指针,竟然传递不进来。。。