各位大哥们,小弟用C8051F020控制CH375A读取U盘遇到了些问题。麻烦帮我看一看: 我初始化MP3盘,并且读取MP3的容量,这些都正常,不过运行到CH375FileOpen( )函数 时,程序就停止了; 就是这里:(我MP3盘里有这个文件) mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "//C51/CH375HFT.C" ); /* 文件名,该文件在C51子目录下 */ i = CH375FileOpen( ); /* 打开文件 */
我等了几分钟,程序都没有往下运行了;手动停止的时候,程序好像是停在了这个函数:
void xQueryInterrupt( void ) /* 查询CH375中断并更新中断状态 */ { while ( CH375_INT_WIRE ); /* 如果CH375的中断引脚输出高电平则等待 */ CH375_CMD_PORT = CMD_GET_STATUS; /* 获取当前中断状态 */ CH375IntStatus &= 0x80; if ( CH375IntStatus ) CH375IntStatus = 0; /* 操作无意义,用于至少延时2uS */ CH375IntStatus = CH375_DAT_PORT; /* 获取中断状态 */ if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT; /* 检测到USB设备断开事件 */ else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT; /* 检测到USB设备连接事件 */ }
程序死在了while ( CH375_INT_WIRE );不过,当我将这个函数改为:
void xQueryInterrupt( void ) /* 查询CH375中断并更新中断状态 */ { while ( CH375_INT_WIRE ); /* 如果CH375的中断引脚输出高电平则等待 */ CH375_CMD_PORT = CMD_GET_STATUS; /* 获取当前中断状态 */ CH375IntStatus &= 0x80; if ( CH375IntStatus ) CH375IntStatus = 0; /* 操作无意义,用于至少延时2uS */ CH375IntStatus = CH375_DAT_PORT; /* 获取中断状态 */ if ( CH375IntStatus == USB_INT_DISCONNECT ) CH375DiskStatus = DISK_DISCONNECT; /* 检测到USB设备断开事件 */ else if ( CH375IntStatus == USB_INT_CONNECT ) CH375DiskStatus = DISK_CONNECT; /* 检测到USB设备连接事件 */ else if ( CH375IntStatus == 0X14 ) CH375DiskStatus = 0XI4; }
程序就很快运行走了;不过返回的i值是0XB3;没有找到文件; 我有点糊涂了; 麻烦大哥们帮我看一下;我C语言不太好。谢谢大家了;