/*---------------------------------------------------------------------------------------------------------*/ int32_t main(void) { /* Unlock protected registers */ SYS_UnlockReg(); SYS_Init(); UART0_Init(); UART1_Init(); printf("\n\n"); printf("+------------------------------------------------------------+\n"); printf("| NuMicro USB Virtual COM Dual Port Sample Code |\n"); printf("+------------------------------------------------------------+\n"); USBD_Open(&gsInfo, VCOM_ClassRequest, NULL); /* Endpoint configuration */ VCOM_Init(); USBD_Start(); NVIC_EnableIRQ(USBD_IRQn); NVIC_EnableIRQ(UART0_IRQn); NVIC_EnableIRQ(UART1_IRQn); while(1) { VCOM_TransferData(); } }
/*---------------------------------------------------------------------------------------------------------*/ int32_t main(void) { uint32_t au32Config[2]; /* Unlock protected registers */ SYS_UnlockReg(); SYS_Init(); UART0_Init(); printf("\n\n"); printf("+-------------------------------------------------------------+\n"); printf("| NuMicro USB Virtual COM and MassStorage Sample Code |\n"); printf("+-------------------------------------------------------------+\n"); /* Enable FMC ISP function */ FMC_Open(); /* Check User Configuration. If not match, to re-define Data Flash size and to enable Data Flash function. */ FMC_ReadConfig(au32Config, 2); if(((au32Config[0] & 0x01) == 1) || (au32Config[1] != DATA_FLASH_BASE)) { FMC_EnableConfigUpdate(); FMC_Erase(FMC_CONFIG0_ADDR); au32Config[0] &= ~0x1; au32Config[1] = DATA_FLASH_BASE; if(FMC_WriteConfig(au32Config, 2) < 0) return -1; FMC_ReadConfig(au32Config, 2); if(((au32Config[0] & 0x01) == 1) || (au32Config[1] != DATA_FLASH_BASE)) { printf("Error: Program Config Failed!\n"); /* Disable FMC ISP function */ FMC_Close(); return -1; } /* Reset Chip to reload new CONFIG value */ SYS->IPRST0 = SYS_IPRST0_CHIPRST_Msk; } printf("NuMicro USB MassStorage Start!\n"); USBD_Open(&gsInfo, VCOM_MSC_ClassRequest, NULL); USBD_SetConfigCallback(MSC_SetConfig); /* Endpoint configuration */ VCOM_MSC_Init(); USBD_Start(); NVIC_EnableIRQ(USBD_IRQn); NVIC_EnableIRQ(UART0_IRQn); while(1) { VCOM_TransferData(); MSC_ProcessCmd(); } }
/*---------------------------------------------------------------------------------------------------------*/ int32_t main(void) { uint32_t u32TrimInit; /* Unlock protected registers */ SYS_UnlockReg(); SYS_Init(); UART0_Init(); printf("\n"); printf("+--------------------------------------------------------------+\n"); printf("| NuMicro USB Virtual COM and HID Keyboard Sample Code |\n"); printf("+--------------------------------------------------------------+\n"); printf("If PB.15 = 0, just report it is key 'a'.\n"); /* Set PB.15 as Quasi-bidirectional mode */ PB->PMD = (PB->PMD & ~GPIO_PMD_PMD15_Msk) | (GPIO_PMD_QUASI << GPIO_PMD_PMD15_Pos); USBD_Open(&gsInfo, HID_ClassRequest, NULL); /* Endpoint configuration */ HID_Init(); USBD_Start(); #if CRYSTAL_LESS /* Backup init trim */ u32TrimInit = M32(TRIM_INIT); /* Enable USB crystal-less */ SYS->HIRCTCTL = 0x201 | (31 << SYS_HIRCTCTL_BOUNDARY_Pos); #endif NVIC_EnableIRQ(USBD_IRQn); NVIC_EnableIRQ(UART02_IRQn); while(1) { #if CRYSTAL_LESS /* Re-start crystal-less when any error found */ if (SYS->HIRCTSTS & (SYS_HIRCTSTS_CLKERIF_Msk | SYS_HIRCTSTS_TFAILIF_Msk)) { SYS->HIRCTSTS = SYS_HIRCTSTS_CLKERIF_Msk | SYS_HIRCTSTS_TFAILIF_Msk; if((u32TrimInit < 0x1E6) || (u32TrimInit > 0x253)) /* Re-enable crystal-less */ SYS->HIRCTCTL = 0x201 | (1 << SYS_HIRCTCTL_BOUNDARY_Pos); else /* Re-enable crystal-less */ SYS->HIRCTCTL = 0x201 | (31 << SYS_HIRCTCTL_BOUNDARY_Pos); //printf("USB trim fail. Just retry. SYS->HIRCTSTS = 0x%x, SYS->HIRCTCTL = 0x%x\n", SYS->HIRCTSTS, SYS->HIRCTCTL); } #endif VCOM_TransferData(); HID_UpdateKbData(); } }
/*---------------------------------------------------------------------------------------------------------*/ int32_t main (void) { SYS_Init(); UART0_Init(); printf("NuMicro USB CDC One Port\n"); USBD_Open(&gsInfo, VCOM_ClassRequest, NULL); /* Endpoint configuration */ VCOM_Init(); NVIC_EnableIRQ(UART0_IRQn); NVIC_EnableIRQ(USBD_IRQn); USBD_Start(); while(1) { VCOM_TransferData(); } }
/*---------------------------------------------------------------------------------------------------------*/ int32_t main (void) { SYS_Init(); UART0_Init(); printf("NuMicro USB composite device Sample.(VCOM and HID Keyboard)\n"); printf("If PB.15 = 0, just report it is key 'a'.\n"); USBD_Open(&gsInfo, HID_ClassRequest, NULL); /* Endpoint configuration */ HID_Init(); NVIC_EnableIRQ(UART0_IRQn); NVIC_EnableIRQ(USBD_IRQn); USBD_Start(); while(1) { VCOM_TransferData(); HID_UpdateKbData(); } }
/*---------------------------------------------------------------------------------------------------------*/ int32_t main (void) { sysInitializeUART(); sysprintf("\n"); sysprintf("=========================\n"); sysprintf(" NUC970 USB VCOM \n"); sysprintf("=========================\n"); sysDisableCache(); sysInvalidCache(); sysSetMMUMappingMethod(MMU_DIRECT_MAPPING); sysEnableCache(CACHE_WRITE_BACK); sysInstallISR(HIGH_LEVEL_SENSITIVE|IRQ_LEVEL_1, USBD_IRQn, (PVOID)USBD_IRQHandler); /* enable CPSR I bit */ sysSetLocalInterrupt(ENABLE_IRQ); USBD_Open(&gsInfo, VCOM_ClassRequest, NULL); /* Endpoint configuration */ VCOM_Init(); sysEnableInterrupt(USBD_IRQn); /* Start transaction */ while(1) { if (USBD_IS_ATTACHED()) { USBD_Start(); break; } } while(1) { VCOM_TransferData(); } }
/*---------------------------------------------------------------------------------------------------------*/ int32_t main(void) { uint32_t u32TrimInit; uint32_t au32Config[2]; /* Unlock protected registers */ SYS_UnlockReg(); SYS_Init(); UART0_Init(); printf("\n"); printf("+-------------------------------------------------------------+\n"); printf("| NuMicro USB Virtual COM and MassStorage Sample Code |\n"); printf("+-------------------------------------------------------------+\n"); /* Enable FMC ISP function */ FMC_Open(); /* Check if Data Flash Size is 64K. If not, to re-define Data Flash size and to enable Data Flash function */ if(FMC_ReadConfig(au32Config, 2) < 0) return -1; if(((au32Config[0] & 0x01) == 1) || (au32Config[1] != DATA_FLASH_BASE)) { FMC_EnableConfigUpdate(); au32Config[0] &= ~0x1; au32Config[1] = DATA_FLASH_BASE; FMC_Erase(CONFIG_BASE); if(FMC_WriteConfig(au32Config, 2) < 0) return -1; FMC_ReadConfig(au32Config, 2); if(((au32Config[0] & 0x01) == 1) || (au32Config[1] != DATA_FLASH_BASE)) { printf("Error: Program Config Failed!\n"); /* Disable FMC ISP function */ FMC_Close(); return -1; } /* Reset Chip to reload new CONFIG value */ SYS->IPRSTC1 = SYS_IPRSTC1_CHIP_RST_Msk; } printf("NuMicro USB MassStorage Start!\n"); /* Open USB controller */ USBD_Open(&gsInfo, VCOM_MSC_ClassRequest, NULL); USBD_SetConfigCallback(MSC_SetConfig); /* Endpoint configuration */ VCOM_MSC_Init(); USBD_Start(); #if CRYSTAL_LESS /* Backup init trim */ u32TrimInit = M32(TRIM_INIT); /* Enable USB crystal-less */ SYS->HIRCTCTL = 0x201 | (31 << SYS_HIRCTCTL_BOUNDARY_Pos); #endif NVIC_EnableIRQ(USBD_IRQn); NVIC_EnableIRQ(UART02_IRQn); while(1) { #if CRYSTAL_LESS /* Re-start crystal-less when any error found */ if (SYS->HIRCTSTS & (SYS_HIRCTSTS_CLKERIF_Msk | SYS_HIRCTSTS_TFAILIF_Msk)) { SYS->HIRCTSTS = SYS_HIRCTSTS_CLKERIF_Msk | SYS_HIRCTSTS_TFAILIF_Msk; if((u32TrimInit < 0x1E6) || (u32TrimInit > 0x253)) /* Re-enable crystal-less */ SYS->HIRCTCTL = 0x201 | (1 << SYS_HIRCTCTL_BOUNDARY_Pos); else /* Re-enable crystal-less */ SYS->HIRCTCTL = 0x201 | (31 << SYS_HIRCTCTL_BOUNDARY_Pos); //printf("USB trim fail. Just retry. SYS->HIRCTSTS = 0x%x, SYS->HIRCTCTL = 0x%x\n", SYS->HIRCTSTS, SYS->HIRCTCTL); } #endif VCOM_TransferData(); MSC_ProcessCmd(); } }