我只是說看看這一小部分的程序參考一下,你不愿意就算了。做人要謙虛點,你水平高能高過版主嗎?比起別人來說你只是一只喜歡亂叫的虛榮者,如果你在學(xué)?;蛘咴俟ぷ魃喜豁樌?,找合適的地方撒野去,看不慣搞學(xué)問還象你這樣的,你如果不愿意回答我的問題,就當(dāng)沒看見,請管好你的嘴?。。。。。?!
拜托,這一部分代碼我在這論壇里都看到過N次了,好多地方版主都貼出來給別人做參考了。 這兒的版主只是在極力推銷他們的模塊,真的底層的問題他們根本不給你解決,巴不得你買他們的模塊,我沒有撒野,我只是看不慣你這種態(tài)度。 如果你真的想脫離他們的底層開發(fā)的話,你在這兒問版主一百年你也問不出結(jié)果
給你貼出來吧,免得你說我撒野,我從別的貼子里拷貝來的,你連代碼都不會找,這是事實吧。人家都有死等中斷的。
這是初始化的代碼 { UINT8 mInitDisk( void ) { /* 初始化磁盤 */ UINT8 Status,i,j=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ Status = CH375_RD_DAT_PORT( ); if ( Status == USB_INT_DISCONNECT ) return( Status ); /* USB設(shè)備斷開 */ CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存儲器 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ //--這兒是死等 if ( Status != USB_INT_SUCCESS ) return( Status ); /* 出現(xiàn)錯誤 */ while(1){j++; CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯誤 */ else { mDelaymS( 250 ); CH375_WR_CMD_PORT( CMD_DISK_R_SENSE ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) /* 出現(xiàn)錯誤 */ 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( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯誤 */ } return( 0 ); /* U盤已經(jīng)成功初始化 */ }
這是死等中斷的代碼。 unsigned char mWaitInterrupt() { /* 主機端等待操作完成, 返回操作狀態(tài) */ while( CH375_INT_WIRE ); /* 查詢等待CH375操作完成中斷(INT#低電平) */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ return( CH375_RD_DAT_PORT( ) ); }
好了,不跟你說了,還是謝謝你,別人不見得比你笨,版主也不見得不解決問題。心態(tài)平和些,對健康有好處
心態(tài)不平和就不給你發(fā)貼子了,你如果在我們公司我早就罵得狗血噴頭了。
呵呵