ch376读文件遇到的问题

//这是读块函数 UINT8 CH376ReadBlock( unsigned char far* buf ) /* 从当前主机端点的接收缓冲区读取数据块,返回长度 */ { 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 ); }

//这时读字节函数

UINT8 xReadCH376Data( void ) /* 从CH376读数据 */ { UINT32 i; for ( i = 0; i < 500; i ++ ) //源程序中本来是500000,我改成了500 { /* 计数防止超时 */ if ( RI ) { /* 串口接收到 */ RI = 0; return( SBUF ); /* 串口输入 */ } } printf("i=%lu\r\n", i); return( 0 ); /* 不应该发生的情况 */ }

我用UINT8 CH376ByteRead( unsigned char far* buf, UINT16 ReqCount, PUINT16 RealCount )读某文件100个字节的时候,老是有几字节超时,也就是printf打印出500 我该怎么办??

把串口打印函数去掉 printf("i=%lu\r\n", i); 这会占用很长时间。


楼上的哥们,我就是程序不行,所以才用的printf(),现在好像发现是其他中断中断了读字节的过程,导致了出错,但我也不敢肯定~毕竟被中断之后还会回来的~


读字节的过程不可以被中断,虽然单片机中断返回了,但是CH376怎么知道你是否进中断了呢? 它会不断的发数据,直到把要求读的数据都发完。


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