F2812 DSP CCS 编译,结构体成员为指针,竟然传递不进来。。。
struct QueueBuffer{<br /> Uint16 *aBufferStart;<br /> Uint16 *aBufferEnd;<br /> Uint16 *pIn;<br /> Uint16 *pOut;<br /> unsigned int mCount;<br />};<br /><br />struct QueueBuffer *Queue_Register(Uint16 *pQueueBufArry,unsigned int mSize)<br />{<br /> struct QueueBuffer *pQueueBuffer;<br /> Uint16 sQueue_size;<br /> //分配记录队列信息的结构变量<br /> pQueueBuffer=(struct QueueBuffer *)Memory_Malloc(sizeof(struct QueueBuffer)); <br /><br /> sQueue_size=sizeof(struct QueueBuffer);<br /> //记录队列信息的结构变量清0<br /> Memory_Memset((unsigned char *) pQueueBuffer,0,sQueue_size);<br /><br />//分配队列所需内存,这里使用编译器自动分配的内存<br /> pQueueBuffer->aBufferStart=pQueueBuffer->pIn=pQueueBuffer->pOut=pQueueBufArry;<br /> //队列结束指针<br /> pQueueBuffer->aBufferEnd=pQueueBuffer->aBufferStart+mSize;<br /> return pQueueBuffer;<br />}<br />看这句话<br />pQueueBuffer->aBufferStart=pQueueBuffer->pIn=pQueueBuffer->pOut=pQueueBufArry;<br />在这个语句中, pQueueBufArry的值是0x00010003,但是给pQueueBuffer->aBufferStart aBufferStart=pQueueBuffer->pIn赋值之后,pQueueBuffer->aBufferStart变成0x00030001.。。。。不知道为什么赋值不对?<br /><br />感觉是高8位和低8位交换了位置。。。。
忌讳这种写法
pQueueBuffer->aBufferStart=pQueueBuffer->pIn=pQueueBuffer->pOut=pQueueBufArry;<br /><br />分成3步付值,结构清晰要简单;<br />这种写法付值先后次序不明朗,以后移植也是问题。<br />这个是初始化里的。只在开头调用一次。
关键不是这个原因。也分步试过,但是还是传递变错。。。<br />本人对汇编又不是很了解,所以很郁闷。。。不知道是什么原因语法的问题
*pQueueBuffer->aBufferStart=*pQueueBuffer->pIn=*pQueueBuffer->pOut=*pQueueBufArry这是什么语法?
*pQueueBuffer->aBufferStart=*pQueueBuffer->pIn=*pQueueBuffer->pOut=*pQueueBufArry<br /><br />我要的是传递指针值,你的这句只是将pQueueBufArry指针指向的存储区内容赋给前面变量啊。。工程贴上来看看
我用你的程序简单做了个工程,看结果是对的.<br />把你的工程打包上来看看,可能是别的原因造成的.那就奇怪了???
我遇到了同样的问题
页:
[1]