ch376 串口方式 int查询

各位大虾,我使用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); } } }

我定义了CH376_INT_WIRE 引脚,#define CH376_INT_WIRE GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)//查询引脚电平

/* 假定CH376的INT#引脚,如果未连接那么也可以通过查询串口中断状态码实现 */

u8 Query376Interrupt( void ) { // UINT8 a; #ifdef CH376_INT_WIRE return( CH376_INT_WIRE ? FALSE : TRUE ); /* 如果连接了CH376的中断引脚则直接查询中断引脚 */ #else if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET) { // a=USART_ReceiveData(USART2); return(TRUE); } else return(FALSE); #endif

}


0X03返回码代表磁盘已经初始化成功,但是尚未分析文件系统或者文件系统不支持。你的U盘是什么格式格成FAT32试一下?


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