Example #1
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{
    /* Initialize four LEDs mounted on GD32107C-EVAL board */
    LED_Init();

    /* Enable PWR and BKP clock */
    RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_PWR | RCC_APB1PERIPH_BKP, ENABLE);
    
    /* Enable write access to the registers in Backup domain */
    PWR_BackupAccess_Enable(ENABLE);
    
    /* Clear the bit flag of Tamper Event */
    BKP_ClearBitState();

    /* Check if the POR/PDR reset flag is set */
    if(RCC_GetBitState(RCC_FLAG_POPDRST) != RESET)
    {
        /* Clear the RCC all reset flags */
        RCC_ClearBitState();

        /* Turn on LED4 */
        GPIO_SetBits(GPIOE, GPIO_PIN_0);

        /* Check if Backup data registers has been written */
        if(CheckBackupReg(0x1226) == 0x00)
        {
            /* Backup data registers values are correct */
            /* Turn on LED2 */
            GPIO_SetBits(GPIOC, GPIO_PIN_0);
        }
        else
        { 
            /* Backup data registers values are not correct or they are not 
               written*/
            /* Write data to Backup data registers */
            WriteToBackupReg(0x1226);

            /* Turn on LED3 */
            GPIO_SetBits(GPIOC, GPIO_PIN_2);
        }
    }

    /* Turn on LED5 */
    GPIO_SetBits(GPIOE, GPIO_PIN_1);
       
    while (1)
    {
    }
}
Example #2
0
/**
  * @brief  Main program.
  * @param  None
  * @retval None
  */
int main(void)
{  
    /* Configure the USART peripheral ----------------------------------------*/
    USART_InitStructure.USART_BRR = 115200;
    USART_InitStructure.USART_WL = USART_WL_8B;
    USART_InitStructure.USART_STBits = USART_STBITS_1;
    USART_InitStructure.USART_Parity = USART_PARITY_RESET;
    USART_InitStructure.USART_HardwareFlowControl = USART_HARDWAREFLOWCONTROL_NONE ;
    USART_InitStructure.USART_RxorTx = USART_RXORTX_RX | USART_RXORTX_TX; 
    GD_EVAL_COMInit(&USART_InitStructure);

    printf("\n\r  *********************** RTC Calendar Demo ***********************\n\r");

    /* Check if RTC has aready been configured */
    if (RTC->BKP0R != BKP_VALUE)
    {
        RTC_PreConfiguration();

        RTC_Setup(); 

    }
    else
    {
        /* Detect the reset source */
        if (RCC_GetBitState(RCC_FLAG_POPDRST) != RESET)
        {
            printf("\r\n Power On Reset Occurred....\n\r");
        }
        else if (RCC_GetBitState(RCC_FLAG_EPRST) != RESET)
        {
            printf("\r\n External Reset Occurred....\n\r");
        }

        printf("\n\r No Need To Configure RTC....\n\r");

        #ifdef RTC_CLOCK_SOURCE_LSI
            RCC_LSI_Enable(ENABLE);
        #endif 

        RTC_WaitRSF_ToSetAgain();
        RTC_ClearBitState(RTC_STR_AF);
        EXTI_ClearIntBitState(EXTI_LINE17);

        RTC_ShowTime();
        RTC_ShowAlarm();
    }
    
    RCC_ClearBitState();

    /* LED1 GPIO Initialization */
    RCC_AHBPeriphClock_Enable(LED1_GPIO_CLK, ENABLE);
    GPIO_InitStructure.GPIO_Pin = LED1_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);
    
    LED1_GPIO_PORT->BOR = LED1_PIN;

    /* LED2 GPIO Initialization */
    RCC_AHBPeriphClock_Enable(LED2_GPIO_CLK, ENABLE);
    GPIO_InitStructure.GPIO_Pin = LED2_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);
    
    LED2_GPIO_PORT->BOR = LED2_PIN;

    /* RTC ALARM Interrupt Configuration */
    EXTI_ClearIntBitState(EXTI_LINE17);
    EXTI_InitStructure.EXTI_LINE = EXTI_LINE17;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
    EXTI_InitStructure.EXTI_LINEEnable = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

    NVIC_InitStructure.NVIC_IRQ = RTC_IRQn;
    NVIC_InitStructure.NVIC_IRQPreemptPriority = 0;
    NVIC_InitStructure.NVIC_IRQSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQEnable = ENABLE;
    NVIC_Init(&NVIC_InitStructure);

    while (1)
    {
    }
}