阅读:1472回复:0
如果枚举都没有通过是怎么回事呢?
mainloop的main程序初始化是这样的:
void main(void) { // Disable all Interrupts RaiseIRQL(); // Init BitFlags //bFlags.value = 0; //Init 8051 ports; Hal4Sys_InitMCU(); //Init Timer Hal4Sys_InitTimer0(); D12SUSPD = 0; // Hal4ATA_FindIDEDevice(); Hal4Sys_InitD12(); MLsup_ReconnectUSB(); //Init IDE Harddisk // Power-On Reset D12 // Init FSM DCPFSMstate = USBFSM4DCP_IDLE; BOTFSMstate = USBFSM4BOT_IDLE;// USBFSM4BOT_IDLE=0x01 //BOTFSMstate =0; // Connect to USB Host /* Main program loop */ while(TRUE) { // Enable Interrupt for Interrupt Type Event Stimulie LowerIRQL(); //LowerIRQL() == EA=1 , (no IRQ when EA=0!) // USB Control Pipe if (DCPFSM_SetupProc) // DCPFSM_SetupProc=DCPFSMstate^0 { RaiseIRQL(); MLsup_USBSetupTokenHandler(); LowerIRQL(); } // if SetupProc ………… 不知道顺序有没有错,枚举不通过是不是就是这些初始化的问题? 设备描述府是不是在MLsup_USBSetupTokenHandler();程序中得到啊?那究竟是哪里出了问题呢?会不会是开发板上对跳线还有什么要求呢? 还有,大家说的仿真在0x0000,而实际运行时在0x8000,具体应用时时怎么弄的呢?是说我在生成HEX文件时把interrupt vector地址改成0x8000吗? |
|