ch376 CH376FileOpen 不管有没有文件都返回0x14

CH376FileOpen()打开文件不管u盘里有没有文件都是返回USB_INT_SUCCESS(0x14)这是为什么呢?程序走下去后u盘上看不见任何东西。2g的u盘,我已经试过好多分区格式了Fat32、fat16、fat都看不见东西。

我单独用CH376FileCreate(buf);强制创建文件可以,但是写不进去东西。

我用的是stm32,下面是代码。

strcpy( (char *)buf, "/CH376.TXT" ); s = CH376FileOpen(buf); /* 打开文件,该文件在根目录下 */ if ( s == USB_INT_SUCCESS ) { s = CH376ByteLocate( 0xFFFFFFFF ); /* 移到文件的尾部 */ mStopIfError( s ); } else if ( s == ERR_MISS_FILE ) { /* 没有找到文件,必须新建文件 */ s = CH376FileCreate( NULL ); mStopIfError( s ); } else { mStopIfError( s ); } /* 打开文件时出错 */ strcpy((char *)buf, "今天的ADC数据到此结束\xd\xa" ); s = CH376ByteWrite(buf, strlen( (char *)buf ), NULL ); /* 以字节为单位向文件写入数据 */ mStopIfError( s ); s = CH376FileClose( TRUE ); mStopIfError( s );

对了 我用的是并口方式


你在WINDOWS XP下格式化的吗?在XP下格式话实验一下


试了 还用了好多软件格成不同格式、族大小都不行


那么你创建文件可以吗?直接创建一个文件之后关闭文件,看下文件是否可以打开?


CH376FileOpen()不管打开什么文件名返回的都是0x14 你说的是这个意思么,创建完文件里面只有一个w

strcpy( (char *)buf, "/CH376.TXT" ); s = CH376FileCreate(buf); s = CH376FileOpen(buf); //这里返回的总是0x14 strcpy((char *)buf, "今天的ADC数据到此结束\xd\xa" ); s = CH376ByteWrite(buf, strlen( (char *)buf ), NULL ); /* 以字节为单位向文件写入数据 */ mStopIfError( s ); s = CH376FileClose( TRUE ); mStopIfError( s );


0x14是一个中断状态,如果返回一直是0x14,可能是 在CH376产生中断之后,单片机没有发送0x22命令 去读取该中断状态,导致该状态一直保留在CH376内部。查一下中断引脚的连接,以及软件上面 查询中断的函数有没有什么问题。


对对对,我的也是这个问题,跟你一摸一样,就是不知道为什么,那位大侠帮忙解决啊


使用串口操作的时候,查询中断函数改成下面的试试 /* 查询CH376中断(INT#低电平) */ UINT8 Query376Interrupt( void ) { #ifdef CH376_INT_WIRE if(RI==1) //串口接收标志,串口接收到数据 RI=0; //清串口标志 return( CH376_INT_WIRE ? FALSE : TRUE ); /* 如果连接了CH376的中断引脚则直接查询中断引脚 */ #else if ( RI ) ////串口接收标志,串口接收到数据 { RI = 0; //清串口标志 return( TRUE ); } else return( FALSE ); #endif }


我的也是这个问题,采用的并口方式,中断查询


我的解决了 是中断问题 但现在又出现新问题了 只有在线debug时才能读写u盘 摘下来是 就不能工作了


怎么不能共组的?现象是什么?请说明。 重点检查一下时序,监视一下在哪里无法通过的。如果测试命令不过基本上可以确定是读写时序不对。仿真时速度应该慢一些


我也遇到过同样的问题,后来不采用检测#INT脚,而采用UART中断查询的方式,就可以了


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