用mega128+CH375B+U盘实现对U盘的文件读写操作。 使用了avr的CH375HFB.A文件子程序库。 事先做了两个实验,第一用命令0x06,传数按位取反命令,能成功。第二用CH375DiskConnect()函数,插拔U盘串口调试也能提示成功。 接下来就是要实现最开始叙述的功能。但程序死于CH375DiskReady()。后从网上看到去CH375DiskReady()函数,直接走CH375FileCreate(),程序就死于CH375FileCreate()。 不知道是什么原因,请高手们赐教!
void main(void) { char i; UINT8 returnData=0xFF; unsigned char tmp = 0; init_devices(); CH375Reset();
if(CH375LibInit()==ERR_SUCCESS) UsartSendBuf("USB初始化成功\n",14); else UsartSendBuf("USB初始化失败\n",14); while(1) { /* 查询CH375中断并更新中断状态,等待U盘插入 */ if(CH375DiskConnect()==ERR_SUCCESS) UsartSendBuf("USB连接成功\n",12); else UsartSendBuf("USB断开连接\n",12); mDelaymS(1000); /* 检查U盘是否准备好,有些U盘不需要这一步,但是某些U盘必须要执行这一步才能工作 */ for(i=0;i<5;i++) { /* 有的U盘总是返回未准备好,不过可以被忽略 */ mDelaymS(100); if(CH375DiskReady()==ERR_SUCCESS) { UsartSendBuf("U盘准备好\n",10); break; /* 查询磁盘是否准备好 */ } } if(i==5) UsartSendBuf("U盘未准备好\n",12); UsartSendBuf("\n------------------\n",20); for(i=0;i<5;i++ ) { mDelaymS(200); } //等待 strcpy((char *)mCmdParam.Create.mPathName,title ); //写入文件
while(1) { returnData = CH375FileCreate(); UsartSendBuf("USB创建文件\n",12); UsartTransmit(returnData); UsartSendBuf("\n----------\n",12); mCmdParam.Write.mSectorCount=1; returnData = CH375FileWrite(); UsartSendBuf("USB写写文件\n",12); UsartTransmit(returnData); UsartSendBuf("\n----------\n",12); returnData = CH375FileClose(); //关闭文件 UsartSendBuf("USB关闭文件\n",12); UsartTransmit(returnData); UsartSendBuf("\n----------\n",12); mDelaymS( 1000 ); } } }