如題: 請幫忙看下以下代碼的問題在哪里? void FileOperate(UCHAR command,UCHAR *Filename) { xWriteCH376Cmd(command); while(*Filename != 0x00) { xWriteCH376Data(*Filename); Filename++; } } FileOperate(0x2F,"\\ABC"); //設置文件名 xWriteCH376Cmd(0X34); //創建文件 while(!Intterrupt); //等待中斷 xWriteCH376Cmd(0X22); //取消中斷并返回狀態 res = xReadCH376Data( ); //獲取返回狀態 if( res == 0x14) return True; else return False; 請幫忙看下為什么創建不成功,謝謝!
你的文件名有错吧?你这是在创建目录,你用FileOperate(0x2F,"\\ABC.TXT")试一下?
無法刪除,而且好像不是TXT檔案。
又创建不了 了.第一次還可以,隔式化以后再試不行了.
那么你创建文件之后返回的错误代码是多少?
0X22
那说明USB操作有问题,问下DISK-MOUNT那个命令返回多少?
我是SD卡,用的SPI協議. 初始化DISK-MOUNT 0X51
初始化返回狀態 0X14
設備連接后進行初始化. for(i = 0;i < 3;i++) //初始化設備 { xWriteCH376Cmd(0X31); //初始化磁盤并檢測磁盤是否就緒 Delay1ms(200); //延時 初始化3次 } xWriteCH376Cmd(0X22); //取消中斷請求并獲取狀態 res = xReadCH376Data( ); if( res == USB_INI_SUCCESS) return True; else return False; 初始化返回狀態為0X14. 這樣寫可以么?
初始化返回0x14是正确的,你的diskmout测试发送命令后,不需要发0x22命令直接等待中断返回即可。
xWriteCH376Cmd(0X22); //取消中斷請求并獲取狀態 res = xReadCH376Data( ); if( res == USB_INI_SUCCESS) return True; else return False; 以上代碼都不需要嗎以? 只要while(!Intterrupt);就可以了嗎?
恩 你这样试一下,看看diskmount那个命令返回多少
初始化后始終等不到中斷.
你可以用xWriteCH376Cmd(0X22)来获取中断状态,也可以通过硬件引脚#INT判断中断,diskmount返回值14是正确的,那么检查FileOperate那块,返回值0x22感觉就是获取到了发过去的命令。