Example #1
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
    LED_config();
    SysTick_Configuration();

    while (1)
    {
    }
}
Example #2
0
/**
  * @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)
    {
        
    }
}
Example #3
0
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)
    {
    }
}