USB入門總結(jié)
------------------------------------------------------------*/
usb_status.configuration = NULL;
usb_status.remote_wakeup = 0;
usb_status.address = 0;
usb_status.dvcstate = DEFAULT_STATE; /* Device state :DEFAULT */
usb_status.stall_req = 0;
#ifdef Debug
test[conters]='!';
conters++;
#endif
/*------------------------------------------------------------
Callback to application layer
------------------------------------------------------------*/
(*usb_status.callback)();
}
else if (SUSPENDED_INT())
{ /* suspended state */
/* for USB Rev.1.1
Transit to suspended state after detect the USB line has kept idle over 3msec.
After resume detected, end suspend state in 3msec to be able to respond
the host request.
*/
CLR_SUSPENDED_STATE();
#ifdef Debug
test[conters]='@';
conters++;
#endif
}
else if (AWAKE_INT())
{ /* Deveice awake state */
/* AWAKE procedure */
CLR_AWAKE_STATE(); /* Request clear */
#ifdef Debug
test[conters]='#';
conters++;
#endif
}
else if (USB_BUSRESET_DES_INT())
{ /* USB bus reset deassert */
/* Procedure for USB bus reset de-assert */
CLR_BUS_RESET_DES_STATE(); /* Request clear */
#ifdef Debug
test[conters]='$';
conters++;
#endif
}
else if (SOF_INT())
{ /* SOF interrupt status */
CLR_B_SOF_STATE();
#ifdef Debug
test[conters]='%';
conters++;
#endif
/* SOF interrupt status clear */
} /* SOF interrupt status */
if (SETUP_RDY_INT())
{ /* setup ready */
#ifdef Debug
test[conters]='^';
conters++;
#endif
read_Device_Requests();
}
else if(EP1_PKTRDY_INT())
{ /* EP1 packet ready */
read_FIFO(EP1);
}
else if (EP2_PKTRDY_INT())
{ /* EP2 packet ready */
write_FIFO(EP2);
}
else if (EP0_RXPKTRDY_INT())
{ /* EP0 receive packet ready */
read_FIFO(EP0RX);
}
else if (EP0_TXPKTRDY_INT())
{ /* EP0 transmit packet ready */
write_FIFO(EP0TX);
}
}
計錄的結(jié)果在變量查看中顯示如下:
首先我解釋一下,這段程序是我在做USB設(shè)備時的中斷函數(shù)。主
評論