我想达到的效果是,通过按键1使MCU进入Standby mode。然后RTC ALARM 和wake up按键都能唤醒,但是wake up虽然能唤醒,RTC alarm总是唤醒不了!
[mw_shl_code=c,true]//RTCAlarm-Config
void RTC_Init(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  WR_BackupAccessCmd(ENABLE);
BKP_DeInit();
RCC_LSICmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)
{
delay_ms(10);
}
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
RTC_WaitForLastTask();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
RTC_SetPrescaler(40000);
RTC_WaitForLastTask();
RCC_ClearFlag();
Set_Alarm(10);
}
void RTCAlarm_Init (void)
{
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
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;
}
void Set_Alarm(u8 sec)
{
RTCAlarm_Init();
RTC_WaitForSynchro();
RTC_ITConfig(RTC_IT_SEC,DISABLE);
RTC_ITConfig(RTC_IT_ALR,ENABLE);
RTC_WaitForSynchro();
RTC_SetAlarm(RTC_GetCounter() + sec);
RTC_WaitForLastTask();
}
[/mw_shl_code]
|