STM32+CH376S+USART

求助大虾,我使用STM32f103和CH376S通讯,铜鼓USART串口,程序基本调试成功。但是在保存数据时,有时能保存,有时保存不上。我在应用中保存5次,有的时候一次也存不上,有的时候能存上2,3,4次等。程序代码如下:子程序都是调用的例程库里面的 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, "\\AAAAAAAA.TXT" ); //目标文件名 s = CH376FileOpen( "/YY_ADC.XLS" ); // 打开文件,该文件在C51子目录下 if ( s == USB_INT_SUCCESS ) { s=CH376ByteLocate(0xffffffff); mStopIfError(s); } else if(s ==ERR_MISS_FILE) { s = CH376FileCreate( "/YY_ADC.XLS" ); // s = CH376FileOpen( TarName ); mStopIfError(s); } else { mStopIfError(s); goto UsbFault; }

strcpy((char *)buf, "兄弟们那个加油哇 呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵" ); s = CH376ByteWrite( buf, strlen((const char *)buf), NULL ); /* 以字节为单位向当前位置写入数据块 */ mStopIfError(s); s = CH376FileClose( TRUE ); mStopIfError(s); UsbFault: delay_us(1); } } }

你先保存一次看一下是否每次都能通过?如果不能保存,可以用Winhex软件看看有没有数据写进去。


谢谢。您的回复。保存一次也是有时能存上,有时存不上


确保你前面初始化都是正确通过的,再者就是用一楼的方法确认一下是不是已经写进去而没读出来。


可以把你的程序发来 我看一下吗???参考一下  可以吗  QQ 994099840


在吗?、大神  我也在做这个  也遇到问题了  需要你的帮助


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