读写缓冲区问题

请教:

1. CH375的读写缓冲区是在单片机内定义还是在USB芯片内部? 2. 为何读写数据时,数据会丢失?

详细的描述一下你使用的方法,数据丢失的现象.


谢谢,数据丢失解决了,可是收到得数据不正确,我的程序是收到得数据就是发送的数据,主要程序如下: /***************************************************************************** 对CH375的中断进行处理 ********************************************************************************/ void DoInt375() { UCHAR sta; UCHAR i; UCHAR length; UCHAR data buffer[4]; sta=Get_Staut(); switch(sta) { case 0x02: { SendCommand375(R_USB_DATA); //写读端点2数据的命令 length=ReadData375( ); for(i=0;i buffer[i]=ReadData375( ); // SendCommand375(W_USB_DATA7); WriteData375(length); for(i=0;i WriteData375(buffer[i]); break; } case 0x0A: //批量端点/端点2发送完数据,IN表示事务成功 { SendCommand375(ULK_USB); //释放当前USB缓冲区 break; } default: { /* 其它中断,未用到,解锁后退出即可 */ SendCommand375(ULK_USB); /* 释放当前USB缓冲区 */ break; }

}

}

例如: 发送:01 12 22 56 收到:02 02 02 02ReadData375( );

无论发送什么字节收到的都是02,当buffer[]的每个元素赋值时是正确的,即:将 for(i=0;ibuffer[i]=ReadData375( ); 改为: buffer[0]=ReadData375( ); buffer[1]=ReadData375( );...... 得到结果是正确的 请问这是什么原因?


buffer是一个数组首地址,“buffer=ReadData375( )”怎么可以向一个地址赋值呢!


不好意思刚才帖的时候我漏掉了,我用的是buffer[i]=ReadData375( );不知道为什么得到的数据不正确,请在帮忙看看


当然得不到数据,前贴不是解释了么! buffer是一个地址,而ReadData375( )的返回值是一个数据,这个数据不可以赋给buffer呢


c语言错误修改为*buffer++=ReadData375( );


谢谢各位,改成指针的可以了,但是我的buffer[]=ReadData375( ); []里有个i的,一提交就看不到了,为什么我的那种方式就不可以呢?


前面已经解释了阿,建议找一些C语言关于指针方面的资料吧


只有登录才能回复,可以选择微信账号登录