| | |
| | | |
| | | void RTC_SET_ALARM(u32 sec) |
| | | { |
| | | //DEBUG_COM_STREAM("-??-",NULL); |
| | | RTC_SetAlarm(RTC_GetCounter()+sec); |
| | | //DEBUG_COM_STREAM("-??1-",NULL); |
| | | RTC_WaitForLastTask(); |
| | | //DEBUG_COM_STREAM("-??2-",NULL); |
| | | RTC_ITConfig(RTC_FLAG_ALR,ENABLE); |
| | | //DEBUG_COM_STREAM("-??-",NULL); |
| | | RTC_SetAlarm(RTC_GetCounter()+sec); |
| | | //DEBUG_COM_STREAM("-??1-",NULL); |
| | | RTC_WaitForLastTask(); |
| | | //DEBUG_COM_STREAM("-??2-",NULL); |
| | | RTC_ITConfig(RTC_FLAG_ALR,ENABLE); |
| | | } |
| | | |
| | | void RTC_Configuration(uint16_t interval) |
| | | { |
| | | EXTI_InitTypeDef EXTI_InitStructure; |
| | | |
| | | /* Enable PWR and BKP clocks */ |
| | | RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); |
| | | EXTI_InitTypeDef EXTI_InitStructure; |
| | | |
| | | /* Allow access to BKP Domain */ |
| | | PWR_BackupAccessCmd(ENABLE); |
| | | /* Enable PWR and BKP clocks */ |
| | | RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); |
| | | |
| | | /* Reset Backup Domain */ |
| | | //BKP_DeInit(); |
| | | /* Allow access to BKP Domain */ |
| | | PWR_BackupAccessCmd(ENABLE); |
| | | |
| | | RCC_LSICmd(ENABLE); |
| | | /* Enable LSE */ |
| | | //RCC_LSEConfig(RCC_LSE_ON); |
| | | /* Wait till LSE is ready */ |
| | | while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET){} |
| | | /* Reset Backup Domain */ |
| | | //BKP_DeInit(); |
| | | |
| | | /* Select LSE as RTC Clock Source */ |
| | | RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); |
| | | RCC_LSICmd(ENABLE); |
| | | /* Enable LSE */ |
| | | //RCC_LSEConfig(RCC_LSE_ON); |
| | | /* Wait till LSE is ready */ |
| | | while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET) {} |
| | | |
| | | /* Enable RTC Clock */ |
| | | RCC_RTCCLKCmd(ENABLE); |
| | | /* Select LSE as RTC Clock Source */ |
| | | RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI); |
| | | |
| | | /* Wait for RTC registers synchronization */ |
| | | RTC_WaitForSynchro(); |
| | | /* Enable RTC Clock */ |
| | | RCC_RTCCLKCmd(ENABLE); |
| | | |
| | | /* Wait until last write operation on RTC registers has finished */ |
| | | RTC_WaitForLastTask(); |
| | | /* Wait for RTC registers synchronization */ |
| | | RTC_WaitForSynchro(); |
| | | |
| | | /* Enable the RTC Second */ |
| | | //RTC_ITConfig(RTC_IT_SEC, ENABLE); |
| | | /* Wait until last write operation on RTC registers has finished */ |
| | | RTC_WaitForLastTask(); |
| | | |
| | | /* Wait until last write operation on RTC registers has finished */ |
| | | RTC_WaitForLastTask(); |
| | | |
| | | RTC_ITConfig(RTC_IT_ALR,ENABLE); //?? RTC ??? |
| | | RTC_WaitForLastTask(); |
| | | /* Set RTC prescaler: set RTC period to 1sec */ |
| | | RTC_SetPrescaler(interval); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */ |
| | | /* Enable the RTC Second */ |
| | | //RTC_ITConfig(RTC_IT_SEC, ENABLE); |
| | | |
| | | /* Wait until last write operation on RTC registers has finished */ |
| | | RTC_WaitForLastTask(); |
| | | RTC_SET_ALARM(1); |
| | | |
| | | //RTC外部中断使能 |
| | | EXTI_InitStructure.EXTI_Line = EXTI_Line17; |
| | | /* Wait until last write operation on RTC registers has finished */ |
| | | RTC_WaitForLastTask(); |
| | | |
| | | RTC_ITConfig(RTC_IT_ALR,ENABLE); //?? RTC ??? |
| | | RTC_WaitForLastTask(); |
| | | /* Set RTC prescaler: set RTC period to 1sec */ |
| | | RTC_SetPrescaler(interval); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */ |
| | | |
| | | /* Wait until last write operation on RTC registers has finished */ |
| | | RTC_WaitForLastTask(); |
| | | RTC_SET_ALARM(1); |
| | | |
| | | //RTC外部中断使能 |
| | | EXTI_InitStructure.EXTI_Line = EXTI_Line17; |
| | | EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; |
| | | EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; |
| | | EXTI_InitStructure.EXTI_LineCmd = ENABLE; |
| | | EXTI_Init(&EXTI_InitStructure); |
| | | |
| | | EXTI_Init(&EXTI_InitStructure); |
| | | |
| | | } |
| | | |