ch376讀文件遇到的問題

//這是讀塊函數(shù) UINT8 CH376ReadBlock( unsigned char far* buf ) /* 從當(dāng)前主機(jī)端點(diǎn)的接收緩沖區(qū)讀取數(shù)據(jù)塊,返回長度 */ { UINT8 s, l; xWriteCH376Cmd( CMD01_RD_USB_DATA0 ); l = xReadCH376Data( ); /* 長度 */ s = l; // printf("qu dao cang du le mei ? L = %bu \r\n", l); if ( l ) { do { *buf = xReadCH376Data( ); buf ++; } while ( -- l ); } return( s ); }

//這時(shí)讀字節(jié)函數(shù)

UINT8 xReadCH376Data( void ) /* 從CH376讀數(shù)據(jù) */ { UINT32 i; for ( i = 0; i < 500; i ++ ) //源程序中本來是500000,我改成了500 { /* 計(jì)數(shù)防止超時(shí) */ if ( RI ) { /* 串口接收到 */ RI = 0; return( SBUF ); /* 串口輸入 */ } } printf("i=%lu\r\n", i); return( 0 ); /* 不應(yīng)該發(fā)生的情況 */ }

我用UINT8 CH376ByteRead( unsigned char far* buf, UINT16 ReqCount, PUINT16 RealCount )讀某文件100個(gè)字節(jié)的時(shí)候,老是有幾字節(jié)超時(shí),也就是printf打印出500 我該怎么辦??

把串口打印函數(shù)去掉 printf("i=%lu\r\n", i); 這會(huì)占用很長時(shí)間。


樓上的哥們,我就是程序不行,所以才用的printf(),現(xiàn)在好像發(fā)現(xiàn)是其他中斷中斷了讀字節(jié)的過程,導(dǎo)致了出錯(cuò),但我也不敢肯定~畢竟被中斷之后還會(huì)回來的~


讀字節(jié)的過程不可以被中斷,雖然單片機(jī)中斷返回了,但是CH376怎么知道你是否進(jìn)中斷了呢? 它會(huì)不斷的發(fā)數(shù)據(jù),直到把要求讀的數(shù)據(jù)都發(fā)完。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频