/* Usb interrupt enable/disable Parameters: ena: enable/disable 0: disable interrupt 1: enable interrupt USB Device Initialize Function Called by the User to initialize USB Device Return Value: None  */
void USBD_Init(void)
/* Usb interrupt enable/disable Parameters: ena: enable/disable 0: disable interrupt 1: enable interrupt USB Device Initialize Function Called by the User to initialize USB Device Return Value: None  */
void USBD_Init(void)
{
    LPC_SYSCON->SYSAHBCLKCTRL |= (1UL <<  6);
    LPC_SYSCON->SYSAHBCLKCTRL |= (1UL << 14) |
                                 (1UL << 27);
    LPC_USB->DEVCMDSTAT  |= (1UL << 9);
    LPC_IOCON->PIO0_3    &=  ~(0x1F);
    LPC_IOCON->PIO0_3    |= (1UL << 0);
    LPC_IOCON->PIO0_6    &=   ~7;
    LPC_IOCON->PIO0_6    |= (1UL << 0);
    LPC_SYSCON->PDRUNCFG &= ~((1UL << 8) |
                              (1UL << 10));
    LPC_USB->DATABUFSTART = EP_BUF_BASE & 0xFFC00000;
    LPC_USB->EPLISTSTART  = EP_LIST_BASE;
    NVIC_EnableIRQ(USB_IRQn);
    USBD_Reset();
}