/** * @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) { } }
/** * @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) { } }