kinetis 的usb 功能跟lpc的不一样,要进行data1/data0切换,比较麻烦
初始化
/**********************************************************/
void USB_Init(void)
{
pu8trace=gu8DebugTrace;
/* Software Configuration */
Setup_Pkt=(tUSB_Setup*)BufferPointer[bEP0OUT_ODD];
gu8USB_State=uPOWER;
/* MPU Configuration */
MPU->CESR=0; //MPU is disable. All accesses from all bus masters are allowed
/** Feed 48MHz to the USB FS clock */
// vfnInitUSBClock(USB_CLOCK);
/* NVIC Configuration */
//enable_irq(INT_USB0 - 16);
NVIC_EnableIRQ(USB0_IRQn);
/* USB Module Configuration */
// Reset USB Module
USB0->USBTRC0|=USB_USBTRC0_USBRESET_MASK;
while(FLAG_CHK(USB_USBTRC0_USBRESET_SHIFT,USB0->USBTRC0)){};
// Set BDT Base Register
USB0->BDTPAGE1=(UINT8)((UINT32)tBDTtable>>8);
USB0->BDTPAGE2=(UINT8)((UINT32)tBDTtable>>16);
USB0->BDTPAGE3=(UINT8)((UINT32)tBDTtable>>24);
// Clear USB Reset flag
FLAG_SET(USB_ISTAT_USBRST_MASK,USB0->ISTAT);
// Enable USB Reset Interrupt
FLAG_SET(USB_INTEN_USBRSTEN_SHIFT,USB0->INTEN);
// Enable weak pull downs
USB0->USBCTRL=0x40;
USB0->USBTRC0|=0x40;
USB0->CTL|=0x01;
}