这是工作模式切换代码,通过闹钟切换,只写了进入standby mode的。
void RTC_Alarm_IRQHandler(void)
{
if(RTC_GetITStatus(RTC_IT_ALRA) != RESET)
{
RTC_ClearITPendingBit(RTC_IT_ALRA);
EXTI_ClearITPendingBit(EXTI_Line17);
//进入节电模式2---夜间(正常)工作,--------------------------ultra low power run mode
Write_eeprom_byte(55+EEPROM_START_ADDR,0x3c); //设置标记
RTC_ClearFlag(RTC_FLAG_ALRAF);
}
else if(RTC_GetITStatus(RTC_IT_ALRB) != RESET)
{
RTC_ClearITPendingBit(RTC_IT_ALRB);
EXTI_ClearITPendingBit(EXTI_Line17);
//进入节电模式1--超低功耗模式,------------------------------ultra low power standby with RTC mode
Write_eeprom_byte(55+EEPROM_START_ADDR,0xc3); //设置标记,以方便返回原来工作模式
RTC_ClearFlag(RTC_FLAG_ALRBF);
/* Clear WakeUp flag */
PWR_ClearFlag(PWR_FLAG_WU);
/* Request to enter STANDBY mode (Wake Up flag is cleared in PWR_EnterSTANDBYMode function) */
PWR_EnterSTANDBYMode();
}
}
|