while( 1 ) { while(wait_interrupt() != USB_INT_CONNECT); /* 等待設(shè)備端連接上來 */ Delay_ms( 5 ); reset_device( ); Delay_ms( 5 ); //get_descr(0x01); //獲取設(shè)備描述符 set_addr( 5 ); //設(shè)置地址 設(shè)置設(shè)備端的USB地址 get_descr(0x02); //獲取配置描述符 parse_config_descr( ); //保存描述符中一些值 set_config(config_value);//設(shè)置配置,config_value取自USB設(shè)備的配置描述符 if(set_idle( ) != 1) err(); Delay_ms(250); _SEI( ); //打開中斷,從中斷端點(diǎn)接收數(shù)據(jù) get_int_in( ); //發(fā)送從中斷端點(diǎn)讀數(shù)據(jù)的令牌 do{ if(flag_output == 1) // { P1_2 ^= 0x01; flag_output = 0; } if(device_disconnect == 1) //如果在中斷程序中操作狀態(tài)是USB_INT_DISCONNECT, { 則程序跳出do{ }while(1)這個(gè)循環(huán),重新檢測鼠標(biāo)的 _CLI(); 連接. PORTC_Bit0 = 0; break; } }while( 1 ); }
我的枚舉也有些問題,就是加上 get_descr(0x01) 這個(gè)函數(shù),有些鼠標(biāo)不能通過,所以我就把這個(gè)函數(shù)給注釋了,但是 get_descr(0x02) 這個(gè)函數(shù)卻能通過.怎么回事?
還是當(dāng)我的鼠標(biāo)撥出來后,中斷是可以接收到 USB_INT_DISCONNECT 這個(gè)狀態(tài)碼,程序也跳出了do{ }while(1) 這個(gè)循環(huán),這時(shí)我再插上鼠標(biāo),375就怎么也找不到鼠標(biāo)了. 但是開機(jī)的第一次熱插上375時(shí),375是能夠找到鼠標(biāo)并工作的