| 
 采用RTC报警功能来触发退出停止模式,LED2闪烁3次,共计3秒后退出停止模式。重复试验。。。。。。。。 - //STOPMODE设置初始化
 
 - void STOPMODEG_Config(void)
 
 - {
 
 -  EXTI_InitTypeDef EXTI_InitStructure;
 
 -  GPIO_InitTypeDef GPIO_InitStructure;
 
 -     
 
 -   RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
 
 -   
 
 -   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
 
 -   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 
 -   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 
 -   GPIO_Init(GPIOE, &GPIO_InitStructure);
 
 -  
 
 -  
 
 -   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
 
 -   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 
 -   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 
 -   GPIO_Init(GPIOC, &GPIO_InitStructure);
 
 -   GPIO_ResetBits(GPIOE, GPIO_Pin_2);
 
 -   GPIO_SetBits(GPIOC, GPIO_Pin_2); 
 
 -  
 
 -   GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource2);
 
 -  
 
 -   EXTI_InitStructure.EXTI_Line = EXTI_Line2;
 
 -   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
 
 -   //EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Event;
 
 -   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
 
 -   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
 
 -   EXTI_Init(&EXTI_InitStructure);
 
 -    
 
 -   EXTI_ClearITPendingBit(EXTI_Line17);
 
 -   EXTI_InitStructure.EXTI_Line = EXTI_Line17;
 
 -   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
 
 -   EXTI_Init(&EXTI_InitStructure);   
 
 -   RTC_Configuration();
 
 -  
 
 -   GPIO_SetBits(GPIOD, GPIO_Pin_6);
 
 -  
 
 -   GPIO_ResetBits(GPIOD, GPIO_Pin_3);
 
 -   GPIO_ResetBits(GPIOB, GPIO_Pin_5);
 
 -   GPIO_ResetBits(GPIOD, GPIO_Pin_6);
 
 -   GPIO_ResetBits(GPIOD, GPIO_Pin_3);
 
 - }
 
  
- void RTC_Configuration(void)
 
 - {
 
 -  
 
 -  
 
 -   PWR_BackupAccessCmd(ENABLE);
 
 -  
 
 -   BKP_DeInit();
 
 -  
 
 -  
 
 -   RCC_LSEConfig(RCC_LSE_ON);
 
 -  
 
 -   while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
 
 -   {
 
 -   }
 
 -  
 
 -   RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
 
 -  
 
 -   RCC_RTCCLKCmd(ENABLE);
 
 -  
 
 -  
 
 -   RTC_WaitForSynchro();
 
 -  
 
 -   RTC_SetPrescaler(32767); 
 
 -  
 
 -   RTC_WaitForLastTask();
 
 -  
 
 -   RTC_ITConfig(RTC_IT_ALR, ENABLE);
 
 -  
 
 -   RTC_WaitForLastTask();
 
 - }
 
  
- void SYSCLKConfig_STOP(void)
 
 - {
 
 -  
 
 -   RCC_HSEConfig(RCC_HSE_ON);
 
 -  
 
 -   HSEStartUpStatus = RCC_WaitForHSEStartUp();
 
 -   if(HSEStartUpStatus == SUCCESS)
 
 -   {
 
 -    
 
 -     RCC_PLLCmd(ENABLE);
 
 -    
 
 -     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
 
 -     {
 
 -     }
 
 -    
 
 -     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
 
 -    
 
 -     while(RCC_GetSYSCLKSource() != 0x08)
 
 -     {
 
 -     }
 
 -   }
 
 - }
 
 - void TEST_STOPMODE(void)
 
 - {
 
 -    
 
 -     Tic_Delay(1500);
 
 -    
 
 -     RTC_ClearFlag(RTC_FLAG_SEC);
 
 -     while(RTC_GetFlagStatus(RTC_FLAG_SEC) == RESET);
 
 -    
 
 -     RTC_SetAlarm(RTC_GetCounter()+ 3);
 
 -    
 
 -     RTC_WaitForLastTask();
 
 -    
 
 -     GPIO_SetBits(GPIOD, GPIO_Pin_3);
 
 -    
 
 -     GPIO_ResetBits(GPIOD, GPIO_Pin_6);
 
 -    
 
 -     PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI);
 
 -    
 
 -    
 
 -    
 
 -     GPIO_SetBits(GPIOD, GPIO_Pin_6);
 
 -    
 
 -     SYSCLKConfig_STOP();
 
 -    
 
 -     GPIO_ResetBits(GPIOD, GPIO_Pin_3);
 
 - }
 
  
以上为STOP子程序代码。。。。。。。。在主程序中运行TEST_STOPMODE();即可。  
  |