請(qǐng)教:
1. CH375的讀寫緩沖區(qū)是在單片機(jī)內(nèi)定義還是在USB芯片內(nèi)部? 2. 為何讀寫數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)丟失?
請(qǐng)教:
1. CH375的讀寫緩沖區(qū)是在單片機(jī)內(nèi)定義還是在USB芯片內(nèi)部? 2. 為何讀寫數(shù)據(jù)時(shí),數(shù)據(jù)會(huì)丟失?
詳細(xì)的描述一下你使用的方法,數(shù)據(jù)丟失的現(xiàn)象.
謝謝,數(shù)據(jù)丟失解決了,可是收到得數(shù)據(jù)不正確,我的程序是收到得數(shù)據(jù)就是發(fā)送的數(shù)據(jù),主要程序如下: /***************************************************************************** 對(duì)CH375的中斷進(jìn)行處理 ********************************************************************************/ void DoInt375() { UCHAR sta; UCHAR i; UCHAR length; UCHAR data buffer[4]; sta=Get_Staut(); switch(sta) { case 0x02: { SendCommand375(R_USB_DATA); //寫讀端點(diǎn)2數(shù)據(jù)的命令 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: //批量端點(diǎn)/端點(diǎn)2發(fā)送完數(shù)據(jù),IN表示事務(wù)成功 { SendCommand375(ULK_USB); //釋放當(dāng)前USB緩沖區(qū) break; } default: { /* 其它中斷,未用到,解鎖后退出即可 */ SendCommand375(ULK_USB); /* 釋放當(dāng)前USB緩沖區(qū) */ break; }
}
}
例如: 發(fā)送:01 12 22 56 收到:02 02 02 02ReadData375( );
無論發(fā)送什么字節(jié)收到的都是02,當(dāng)buffer[]的每個(gè)元素賦值時(shí)是正確的,即:將 for(i=0;ibuffer[i]=ReadData375( ); 改為: buffer[0]=ReadData375( ); buffer[1]=ReadData375( );...... 得到結(jié)果是正確的 請(qǐng)問這是什么原因?
buffer是一個(gè)數(shù)組首地址,“buffer=ReadData375( )”怎么可以向一個(gè)地址賦值呢!
不好意思剛才帖的時(shí)候我漏掉了,我用的是buffer[i]=ReadData375( );不知道為什么得到的數(shù)據(jù)不正確,請(qǐng)?jiān)趲兔纯?/p>
當(dāng)然得不到數(shù)據(jù),前貼不是解釋了么! buffer是一個(gè)地址,而ReadData375( )的返回值是一個(gè)數(shù)據(jù),這個(gè)數(shù)據(jù)不可以賦給buffer呢
c語言錯(cuò)誤修改為*buffer++=ReadData375( );
謝謝各位,改成指針的可以了,但是我的buffer[]=ReadData375( ); []里有個(gè)i的,一提交就看不到了,為什么我的那種方式就不可以呢?
前面已經(jīng)解釋了阿,建議找一些C語言關(guān)于指針方面的資料吧