int main(void) { /* Chip errata */ CHIP_Init(); /* Enable HFXO */ CMU_ClockSelectSet(cmuClock_HF, cmuSelect_HFXO); /* Enable deboug output over UART */ RETARGET_SerialInit(); RETARGET_SerialCrLf(1); /* Enable the segment LCD */ SegmentLCD_Init(false); SegmentLCD_Write("USB"); printf("\nStarting USB Device...\n"); /* Set up GPIO interrupts */ gpioInit(); /* Start USB stack. Callback routines in callbacks.c will be called * when connected to a host. */ USBD_Init(&initstruct);; /* * When using a debugger it is pratical to uncomment the following three * lines to force host to re-enumerate the device. */ /* USBD_Disconnect(); */ /* USBTIMER_DelayMs( 1000 ); */ /* USBD_Connect(); */ while(1) { if ( USBD_SafeToEnterEM2() ) { /* Enter EM2 when in suspend or disconnected */ EMU_EnterEM2(true); } else { /* When USB is active we can sleep in EM1. */ EMU_EnterEM1(); } } }
/**************************************************************************//** * @brief main - the entrypoint after reset. *****************************************************************************/ int main( void ) { #if !defined(BUSPOWERED) BSP_Init(BSP_INIT_DEFAULT); /* Initialize DK board register access */ /* If first word of user data page is non-zero, enable eA Profiler trace */ BSP_TraceProfilerSetup(); #endif CMU_ClockSelectSet( cmuClock_HF, cmuSelect_HFXO ); CMU_OscillatorEnable(cmuOsc_LFXO, true, false); #if !defined(BUSPOWERED) RETARGET_SerialInit(); /* Initialize DK UART port */ RETARGET_SerialCrLf( 1 ); /* Map LF to CRLF */ printf( "\nEFM32 Mass Storage Device example\n" ); #endif if ( !MSDDMEDIA_Init() ) { #if !defined(BUSPOWERED) printf( "\nMedia error !\n" ); #endif EFM_ASSERT( false ); for( ;; ){} } MSDD_Init(gpioPortE, 1); for (;;) { if ( MSDD_Handler() ) { /* There is no pending activity in the MSDD handler. */ /* Enter sleep mode to conserve energy. */ if ( USBD_SafeToEnterEM2() ) EMU_EnterEM2(true); else EMU_EnterEM1(); } } }