我只是说看看这一小部分的程序参考一下,你不愿意就算了。做人要谦虚点,你水平高能高过版主吗?比起别人来说你只是一只喜欢乱叫的虚荣者,如果你在学校或者再工作上不顺利,找合适的地方撒野去,看不惯搞学问还象你这样的,你如果不愿意回答我的问题,就当没看见,请管好你的嘴!!!!!!!
拜托,这一部分代码我在这论坛里都看到过N次了,好多地方版主都贴出来给别人做参考了。 这儿的版主只是在极力推销他们的模块,真的底层的问题他们根本不给你解决,巴不得你买他们的模块,我没有撒野,我只是看不惯你这种态度。 如果你真的想脱离他们的底层开发的话,你在这儿问版主一百年你也问不出结果
给你贴出来吧,免得你说我撒野,我从别的贴子里拷贝来的,你连代码都不会找,这是事实吧。人家都有死等中断的。
这是初始化的代码 { UINT8 mInitDisk( void ) { /* 初始化磁盘 */ UINT8 Status,i,j=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ Status = CH375_RD_DAT_PORT( ); if ( Status == USB_INT_DISCONNECT ) return( Status ); /* USB设备断开 */ CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存储器 */ Status = mWaitInterrupt( ); /* 等待中断并获取状态 */ //--这儿是死等 if ( Status != USB_INT_SUCCESS ) return( Status ); /* 出现错误 */ while(1){j++; CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 获取USB存储器的容量 */ Status = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( Status == USB_INT_SUCCESS ) break; /* 出现错误 */ else { mDelaymS( 250 ); CH375_WR_CMD_PORT( CMD_DISK_R_SENSE ); /* 获取USB存储器的容量 */ Status = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( Status == USB_INT_SUCCESS ) /* 出现错误 */ continue; else return (Status); } if(j==5) return(Status); } for(i=0;i!=5;i++){ printf("Ready\n"); CH375_WR_CMD_PORT( CMD_DISK_READY ); /* 获取USB存储器的容量 */ Status = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( Status == USB_INT_SUCCESS ) break; /* 出现错误 */ } return( 0 ); /* U盘已经成功初始化 */ }
这是死等中断的代码。 unsigned char mWaitInterrupt() { /* 主机端等待操作完成, 返回操作状态 */ while( CH375_INT_WIRE ); /* 查询等待CH375操作完成中断(INT#低电平) */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 产生操作完成中断, 获取中断状态 */ return( CH375_RD_DAT_PORT( ) ); }
好了,不跟你说了,还是谢谢你,别人不见得比你笨,版主也不见得不解决问题。心态平和些,对健康有好处
心态不平和就不给你发贴子了,你如果在我们公司我早就骂得狗血喷头了。
呵呵