/** * @brief This function makes USB host to recognize the device * * @param None * * @return None * * @details Enable WAKEUP, FLDET, USB and BUS interrupts. Disable software-disconnect function after 100ms delay with SysTick timer. */ void USBD_Start(void) { //CLK_SysTickDelay(100000); /* Disable software-disconnect function */ USBD_CLR_SE0(); /* Clear USB-related interrupts before enable interrupt */ USBD_CLR_INT_FLAG(USBD_INT_BUS | USBD_INT_USB | USBD_INT_FLDET | USBD_INT_WAKEUP); /* Enable USB-related interrupts. */ USBD_ENABLE_INT(USBD_INT_BUS | USBD_INT_USB | USBD_INT_FLDET | USBD_INT_WAKEUP); }
//========================================================================= //----- (00005D24) -------------------------------------------------------- __myevic__ void DevicesOnOff( int off ) { if ( off ) { TIMER_DisableInt( TIMER0 ); TIMER_DisableInt( TIMER1 ); TIMER_DisableInt( TIMER2 ); if ( !gFlags.light_sleep ) { TIMER_DisableInt( TIMER3 ); } EADC_Close( EADC ); SetADCState( 1, 0 ); SetADCState( 2, 0 ); SetADCState( 14, 0 ); if ( ISVTCDUAL || ISCUBOID || ISCUBO200 || ISRX200S || ISRX23 || ISRX300 ) { SetADCState( 3, 0 ); SetADCState( 13, 0 ); if ( ISCUBO200 || ISRX200S || ISRX23 || ISRX300 ) { SetADCState( 15, 0 ); } PD7 = 0; BBC_Configure( BBC_PWMCH_CHARGER, 0 ); PD7 = 0; if ( ISCUBOID || ISCUBO200 || ISRX200S || ISRX23 ) { PF2 = 0; } } PC1 = 0; PC0 = 0; BBC_Configure( BBC_PWMCH_BUCK, 0 ); if ( !ISVTCDUAL ) PC3 = 0; PC2 = 0; BBC_Configure( BBC_PWMCH_BOOST, 0 ); if ( ISCUBO200 || ISRX200S || ISRX23 ) { PF1 = 0; } else if ( ISRX300 ) { PD1 = 0; } else { PB7 = 0; } GPIO_DisableInt( PD, 0 ); PD0 = 0; GPIO_SetMode( PD, GPIO_PIN_PIN0_Msk, GPIO_MODE_OUTPUT ); if ( ISRX300 ) { PF5 = 0; PF6 = 0; PA3 = 0; PA2 = 0; } if ( ISVTCDUAL ) { GPIO_DisableInt( PD, 1 ); PD1 = 0; GPIO_SetMode( PD, GPIO_PIN_PIN1_Msk, GPIO_MODE_OUTPUT ); } else if ( !ISCUBOID && !ISCUBO200 && !ISRX200S && !ISRX23 && !ISRX300 ) { GPIO_DisableInt( PD, 7 ); PD7 = 0; GPIO_SetMode( PD, GPIO_PIN_PIN7_Msk, GPIO_MODE_OUTPUT ); } SYS->GPE_MFPH &= ~(SYS_GPE_MFPH_PE11MFP_Msk|SYS_GPE_MFPH_PE12MFP_Msk|SYS_GPE_MFPH_PE13MFP_Msk); SYS->GPE_MFPH |= (SYS_GPE_MFPH_PE11MFP_GPIO|SYS_GPE_MFPH_PE12MFP_GPIO|SYS_GPE_MFPH_PE13MFP_GPIO); PE11 = 0; GPIO_SetMode( PE, GPIO_PIN_PIN11_Msk, GPIO_MODE_OUTPUT ); PE12 = 0; GPIO_SetMode( PE, GPIO_PIN_PIN12_Msk, GPIO_MODE_OUTPUT ); PE13 = 0; GPIO_SetMode( PE, GPIO_PIN_PIN13_Msk, GPIO_MODE_OUTPUT ); PE10 = 0; GPIO_EnableInt( PE, 0, GPIO_INT_BOTH_EDGE ); GPIO_EnableInt( PD, 2, GPIO_INT_BOTH_EDGE ); GPIO_EnableInt( PD, 3, GPIO_INT_BOTH_EDGE ); if ( ISVTCDUAL ) { PA3 = 0; PC3 = 0; PF2 = 0; PA2 = 0; } else if ( ISCUBOID || ISCUBO200 || ISRX200S || ISRX23 || ISRX300 ) { PF0 = 0; } SYS_UnlockReg(); SYS->USBPHY &= ~SYS_USBPHY_LDO33EN_Msk; SYS->IVSCTL &= ~(SYS_IVSCTL_VBATUGEN_Msk|SYS_IVSCTL_VTEMPEN_Msk); SYS_DisableBOD(); SYS->VREFCTL = 0; SYS_LockReg(); USBD_CLR_INT_FLAG( USBD_INTSTS_WAKEUP|USBD_INTSTS_FLDET|USBD_INTSTS_BUS|USBD_INTSTS_USB ); USBD_ENABLE_INT( USBD_INT_WAKEUP ); } else { USBD_CLR_INT_FLAG( USBD_INTSTS_WAKEUP ); SYS_UnlockReg(); SYS->USBPHY |= SYS_USBPHY_LDO33EN_Msk; SYS->IVSCTL |= SYS_IVSCTL_VBATUGEN_Msk; if ( ISRX300 ) { SYS->IVSCTL |= SYS_IVSCTL_VTEMPEN_Msk; } SYS->VREFCTL = SYS_VREFCTL_VREF_2_56V; SYS_EnableBOD( SYS_BODCTL_BOD_RST_EN, SYS_BODCTL_BODVL_2_2V ); SYS_LockReg(); GPIO_DisableInt( PE, 0 ); GPIO_DisableInt( PD, 2 ); GPIO_DisableInt( PD, 3 ); if ( ISCUBOID || ISCUBO200 || ISRX200S || ISRX23 ) { PF2 = 1; } SYS->GPE_MFPH &= ~(SYS_GPE_MFPH_PE11MFP_Msk|SYS_GPE_MFPH_PE12MFP_Msk|SYS_GPE_MFPH_PE13MFP_Msk); SYS->GPE_MFPH |= (SYS_GPE_MFPH_PE11MFP_SPI0_MOSI0|SYS_GPE_MFPH_PE12MFP_SPI0_SS|SYS_GPE_MFPH_PE13MFP_SPI0_CLK); GPIO_SetMode( PD, GPIO_PIN_PIN0_Msk, GPIO_MODE_INPUT ); GPIO_EnableInt( PD, 0, GPIO_INT_FALLING ); if ( ISVTCDUAL ) { GPIO_SetMode( PD, GPIO_PIN_PIN1_Msk, GPIO_MODE_INPUT ); GPIO_EnableInt( PD, 1, GPIO_INT_RISING ); GPIO_ENABLE_DEBOUNCE( PD, GPIO_PIN_PIN1_Msk ); } else if ( !ISCUBOID && !ISCUBO200 && !ISRX200S && !ISRX23 && !ISRX300 ) { GPIO_SetMode( PD, GPIO_PIN_PIN7_Msk, GPIO_MODE_INPUT ); GPIO_EnableInt( PD, 7, GPIO_INT_RISING ); GPIO_ENABLE_DEBOUNCE( PD, GPIO_PIN_PIN7_Msk ); } if ( ISCUBO200 || ISRX200S || ISRX23 ) { PF1 = 1; } else if ( ISRX300 ) { PD1 = 1; } else { PB7 = 1; } SetADCState( 1, 1 ); SetADCState( 2, 1 ); SetADCState( 14, 1 ); if ( ISVTCDUAL || ISCUBOID || ISCUBO200 || ISRX200S || ISRX23 || ISRX300 ) { SetADCState( 3, 1 ); SetADCState( 13, 1 ); if ( ISCUBO200 || ISRX200S || ISRX23 || ISRX300 ) { SetADCState( 15, 1 ); } } TIMER_EnableInt( TIMER0 ); TIMER_EnableInt( TIMER1 ); TIMER_EnableInt( TIMER2 ); TIMER_EnableInt( TIMER3 ); } }