用mega128+CH375B+U盤實(shí)現(xiàn)對(duì)U盤的文件讀寫操作。 使用了avr的CH375HFB.A文件子程序庫。 事先做了兩個(gè)實(shí)驗(yàn),第一用命令0x06,傳數(shù)按位取反命令,能成功。第二用CH375DiskConnect()函數(shù),插拔U盤串口調(diào)試也能提示成功。 接下來就是要實(shí)現(xiàn)最開始敘述的功能。但程序死于CH375DiskReady()。后從網(wǎng)上看到去CH375DiskReady()函數(shù),直接走CH375FileCreate(),程序就死于CH375FileCreate()。 不知道是什么原因,請(qǐng)高手們賜教!
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中斷并更新中斷狀態(tài),等待U盤插入 */ if(CH375DiskConnect()==ERR_SUCCESS) UsartSendBuf("USB連接成功\n",12); else UsartSendBuf("USB斷開連接\n",12); mDelaymS(1000); /* 檢查U盤是否準(zhǔn)備好,有些U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作 */ for(i=0;i<5;i++) { /* 有的U盤總是返回未準(zhǔn)備好,不過可以被忽略 */ mDelaymS(100); if(CH375DiskReady()==ERR_SUCCESS) { UsartSendBuf("U盤準(zhǔn)備好\n",10); break; /* 查詢磁盤是否準(zhǔn)備好 */ } } if(i==5) UsartSendBuf("U盤未準(zhǔn)備好\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創(chuàng)建文件\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(); //關(guān)閉文件 UsartSendBuf("USB關(guān)閉文件\n",12); UsartTransmit(returnData); UsartSendBuf("\n----------\n",12); mDelaymS( 1000 ); } } }