各位大虾,我使用STM32F103VCT6与CH37S通讯232串口通讯, 初始化,与U盘链接都成功了,到了 s = CH376FileOpen( "/ABC.TXT" ); 这句话后返回03,不知什么原因?请指教。
源程序如下:void UsbStore(void) { uint8 i,s,j; UINT8 TarName[64]; /* 目标文件名缓冲区 */ // u16 RealCount; uint8 buf[128]; if((STATUSSUM.A==2)&&(USBCOMFLG.A==1)&&(USBCOMFLG.G==1)) { USBCOMFLG.A=0; j=0; while ( CH376DiskConnect( ) != USB_INT_SUCCESS )// 检查U盘是否连接,等待U盘插入,对于SD卡,可以由单片机直接查询SD卡座的插拔状态引脚 { delay_ms( 100 ); j++; if(j>1) { USBCOMFLG.B=1; //U盘未插入或未插好 break; } } delay_ms( 200 ); if(USBCOMFLG.B==0) { for ( i = 0; i < 10; i ++ ) /* 最长等待时间,100*50mS */ { delay_ms( 50 ); s=CH376DiskMount(); // 初始化磁盘并测试磁盘是否就绪 if(s==USB_INT_SUCCESS) break; else if (s==ERR_DISK_DISCON) break; if ( CH376GetDiskStatus( ) >= DEF_DISK_MOUNTED && i >= 5 ) // 有的U盘总是返回未准备好,不过可以忽略,只要其建立连接MOUNTED且尝试5*50mS break; } if ( s == ERR_DISK_DISCON ) // 检测到断开 { USBCOMFLG.B=1; goto UsbFault; } if ( CH376GetDiskStatus( ) < DEF_DISK_MOUNTED ) // 未知USB设备,例如USB键盘、打印机等 { USBCOMFLG.C=1; goto UsbFault; } strcpy( (char *)TarName, "/ABC.TXT" ); //目标文件名 s = CH376FileOpen( "/ABC.TXT" ); if ( s == USB_INT_SUCCESS ) { s=CH376ByteLocate(0xffffffff); mStopIfError(s); } else if(s ==ERR_MISS_FILE) { s = CH376FileCreate( "/ABC.TXT" ); // s = CH376FileOpen( TarName ); mStopIfError(s); } else { mStopIfError(s); goto UsbFault; }
strcpy((char *)buf, "兄弟们那个加油哇 呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵" ); s = CH376ByteWrite( buf, strlen((const char *)buf), NULL ); /* 以字节为单位向当前位置写入数据块 */ delay_us(5); s = CH376FileClose( TRUE ); UsbFault: delay_us(5); } } }