/** * @brief Main program. * @param None * @retval None */ int main(void) { LED_config(); SysTick_Configuration(); while (1) { } }
/** * @brief Main program * @param None * @retval None */ int main(void) { /* System Clocks Configuration */ RCC_Configuration(); /* NVIC configuration */ NVIC_Configuration(); /* LED configuration */ LED_config(); GD_EVAL_LEDOn(LED1); GD_EVAL_LEDOn(LED3); /* USART configuration */ USART_Configuration(); #ifdef GD32F130_150 /* DMA1 channel2 configuration */ DMA_DeInit(DMA1_CHANNEL2); DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)0x40013828; DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SRC_Const_Buffer; DMA_InitStructure.DMA_DIR = DMA_DIR_PERIPHERALDST; DMA_InitStructure.DMA_BufferSize = BufferSize; DMA_InitStructure.DMA_MemoryInc = DMA_MEMORYINC_ENABLE; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PERIPHERALDATASIZE_BYTE; DMA_InitStructure.DMA_MemoryDataSize = DMA_MEMORYDATASIZE_BYTE; DMA_InitStructure.DMA_PeripheralInc = DMA_PERIPHERALINC_DISABLE; DMA_InitStructure.DMA_Mode = DMA_MODE_NORMAL; DMA_InitStructure.DMA_Priority = DMA_PRIORITY_VERYHIGH; DMA_InitStructure.DMA_MTOM = DMA_MEMTOMEM_DISABLE; DMA_Init(DMA1_CHANNEL2, &DMA_InitStructure); USART_DMA_Enable(USART1, USART_DMAREQ_TX, ENABLE); DMA_INTConfig(DMA1_CHANNEL2, DMA_INT_TC, ENABLE); /* Enable DMA transfer */ DMA_Enable(DMA1_CHANNEL2, ENABLE); #elif defined GD32F170_190 /* DMA1 channel2 configuration */ DMA_DeInit(DMA1_CHANNEL4); DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)0x40004428; DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SRC_Const_Buffer; DMA_InitStructure.DMA_DIR = DMA_DIR_PERIPHERALDST; DMA_InitStructure.DMA_BufferSize = BufferSize; DMA_InitStructure.DMA_MemoryInc = DMA_MEMORYINC_ENABLE; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PERIPHERALDATASIZE_BYTE; DMA_InitStructure.DMA_MemoryDataSize = DMA_MEMORYDATASIZE_BYTE; DMA_InitStructure.DMA_PeripheralInc = DMA_PERIPHERALINC_DISABLE; DMA_InitStructure.DMA_Mode = DMA_MODE_NORMAL; DMA_InitStructure.DMA_Priority = DMA_PRIORITY_VERYHIGH; DMA_InitStructure.DMA_MTOM = DMA_MEMTOMEM_DISABLE; DMA_Init(DMA1_CHANNEL4, &DMA_InitStructure); USART_DMA_Enable(USART2, USART_DMAREQ_TX, ENABLE); DMA_INTConfig(DMA1_CHANNEL4, DMA_INT_TC, ENABLE); /* Enable DMA transfer */ DMA_Enable(DMA1_CHANNEL4, ENABLE); #endif /* Waiting for the transfer to complete*/ while(count == 0) { } GD_EVAL_LEDOff(LED1); GD_EVAL_LEDOff(LED3); GD_EVAL_LEDOn(LED2); GD_EVAL_LEDOn(LED4); while(1) { } }
int main(void) { uint32_t i; TransferStatus = PASSED; /* System Clocks Configuration */ RCC_Configuration(); LED_config() ; GPIO_ResetBits(GPIO_LED1_PORT, GPIO_LED1); GPIO_ResetBits(GPIO_LED2_PORT, GPIO_LED3); GPIO_ResetBits(GPIO_LED3_PORT, GPIO_LED2); GPIO_ResetBits(GPIO_LED4_PORT, GPIO_LED4); /* Unlock the Flash Bank1 Program Erase controller */ FMC_Unlock(); /* Define the number of page to be erased */ NbrOfPage = (BANK1_WRITE_END_ADDR - BANK1_WRITE_START_ADDR) / FMC_PAGE_SIZE; /* Clear All pending flags */ FMC_ClearBitState(FMC_FLAG_EOP | FMC_FLAG_WERR | FMC_FLAG_PERR ); /* Erase the FLASH pages */ for(EraseCounter = 0; EraseCounter < NbrOfPage; EraseCounter++) { FMCStatus = FMC_ErasePage(BANK1_WRITE_START_ADDR + (FMC_PAGE_SIZE * EraseCounter)); wrp += (FMCStatus == FMC_WRPERR); FMC_ClearBitState(FMC_FLAG_EOP | FMC_FLAG_WERR | FMC_FLAG_PERR ); } FMC_Lock(); ptrd = (uint32_t*)BANK1_WRITE_START_ADDR; for(i = 0; i < 512; i++) { if(*ptrd != 0xFFFFFFFF) { TransferStatus = FAILED; goto fail; } ptrd++; } /* Unlock the Flash Bank1 Program Erase controller */ FMC_Unlock(); /* Define the number of page to be erased */ NbrOfPage = (BANK1_WRITE_END_ADDR - BANK1_WRITE_START_ADDR) / FMC_PAGE_SIZE; /* Clear All pending flags */ FMC_ClearBitState(FMC_FLAG_EOP | FMC_FLAG_WERR | FMC_FLAG_PERR ); /* Program Flash Bank1 */ Address = BANK1_WRITE_START_ADDR; wrp2 = 0; while(Address < BANK1_WRITE_END_ADDR) { FMCStatus = FMC_ProgramWord(Address, Data); Address = Address + 4; wrp2 += (FMCStatus == FMC_WRPERR); FMC_ClearBitState(FMC_FLAG_EOP | FMC_FLAG_WERR | FMC_FLAG_PERR ); } FMC_Lock(); ptrd = (uint32_t*)BANK1_WRITE_START_ADDR; for(i = 0; i < 512; i++) { if(*ptrd != Data) { TransferStatus = FAILED; goto fail; } ptrd++; } if(TransferStatus != FAILED) { GPIO_ResetBits(GPIO_LED1_PORT, GPIO_LED1); GPIO_ResetBits(GPIO_LED3_PORT, GPIO_LED3); GPIO_SetBits(GPIO_LED2_PORT, GPIO_LED2); GPIO_SetBits(GPIO_LED4_PORT, GPIO_LED4); }else{ fail: GPIO_ResetBits(GPIO_LED2_PORT, GPIO_LED2); GPIO_ResetBits(GPIO_LED4_PORT, GPIO_LED4); GPIO_SetBits(GPIO_LED1_PORT, GPIO_LED1); GPIO_SetBits(GPIO_LED3_PORT, GPIO_LED3); } while(1) { } }