[求助]CH376文件内写数据失败

s = mInitCH376Host(); /* 初始化CH376 */ mStopIfError(s);

s = CKECK_connect(); /* 检查连接 */ mStopIfError(s);

s = CH376DiskMount(); /* U盘初始化 */ mStopIfError(s);

s = CH376DirCreate( "BB" ); mStopIfError(s);

s = CH376FileCreate( "TEST1.TXT" ); mStopIfError(s);

s = CH376FileOpen( "\TEST1.TXT" ); mStopIfError(s);

buf = &PutIn[0]; s = CH376ByteWrite( buf, sizeof(PutIn), NULL );

以上是调用程序的代码。 运行过CH376FileOpen( "\TEST1.TXT" ) 返回0x14操作成功 运行s = CH376ByteWrite( buf, sizeof(PutIn), NULL );之后中断返回0xB4(文件已经关闭,如果需要使用应重新打开)

请问是什么原因?

CH376FileCreate之后文件已经打开不需要调用:

s = CH376FileOpen( "\TEST1.TXT" ); mStopIfError(s);

你去掉那两句试一下?


我之前没用这个 s = CH376FileOpen( "\TEST1.TXT" ); mStopIfError(s);

返回中断就是0xB4,我后来才加上的..


正确流程是不需要加的,出现这个错误是因为CH376写入U盘的数据错误。 你格式化U盘试一下呢?


我试试


不行,还是中断返回0xB4

UINT8 CH376ByteWrite( PUINT8 buff, int ReqCount, PUINT16 RealCount ) /* 以字节为单位向当前位置写入数据块 */ { UINT8 i,s; xWriteCH376Cmd( CMD2H_BYTE_WRITE ); /* 0x3C 主机文件模式: 以字节为单位向当前位置写入数据块 */ xWriteCH376Data( (UINT8)ReqCount ); xWriteCH376Data( (UINT8)(ReqCount>>8) ); // xEndCH376Cmd( ); if ( RealCount ) *RealCount = 0; while ( 1 ) { s = Wait376Interrupt( ); if ( s == USB_INT_DISK_WRITE ) /* 0x1E USB存储器请求数据写入 */ { s = CH376WriteReqBlock( buff ); /* 向内部指定缓冲区写入请求的数据块,返回长度 */ xWriteCH376Cmd( CMD0H_BYTE_WR_GO ); // xEndCH376Cmd( ); buff += s; if ( RealCount ) *RealCount += s; } /* else if ( s == USB_INT_SUCCESS ) return( s );*/ /* 结束 */ else return( s ); /* 错误 */ } }

s = Wait376Interrupt( ); 在这里就返回0xB4 不能进入下面的if( s == USB_INT_DISK_WRITE )


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