打印

STM32L151RC standby模式闹钟唤醒不成功

[复制链接]
474|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
过期账户|  楼主 | 2019-11-24 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32L151RC standby模式闹钟唤醒不成功,不知道什么原因了,

void Rtc_Init(void)
{
        RTC_InitTypeDef RTC_InitStructure;
  // Enable the PWR clock //
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
  // Allow access to RTC //
  PWR_RTCAccessCmd(ENABLE);
        
  // Reset RTC Domain //
  RCC_RTCResetCmd(ENABLE);
  RCC_RTCResetCmd(DISABLE);

  RCC_LSEConfig(RCC_LSE_ON);
  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET){}        
  // Select the RTC Clock Source //
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
               
        RTC_InitStructure.RTC_AsynchPrediv = 0x7F;
        RTC_InitStructure.RTC_SynchPrediv = 0x7FFF;
        RTC_InitStructure.RTC_HourFormat = RTC_HourFormat_24;
        RTC_Init(&RTC_InitStructure);               
  // Enable the RTC Clock //
  RCC_RTCCLKCmd(ENABLE);
  // Wait for RTC APB registers synchronisation //
  RTC_WaitForSynchro();
        
        RtcAlarm_Init();
}

void RtcAlarm_Init(void)
{
  EXTI_InitTypeDef EXTI_InitStructure;
  NVIC_InitTypeDef NVIC_InitStructure;

  /* EXTI configuration */
  EXTI_ClearITPendingBit(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_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

  /* Enable the RTC Alarm Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = RTC_Alarm_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  RTC_ITConfig(RTC_IT_ALRA, DISABLE);
  RTC_AlarmCmd(RTC_Alarm_A, DISABLE);

}

//闹钟测试函数
void SetnStartAlarmTest(uint16_t sec)
{
        RTC_TimeTypeDef RTC_TimeStructure;
        RTC_AlarmTypeDef  RTC_AlarmStructure;
        
        RTC_AlarmCmd(RTC_Alarm_A, DISABLE); //禁用Alarm
        PWR_RTCAccessCmd(ENABLE);//启用访问RTC备份寄存器
        
        RTC_GetTime(RTC_Format_BIN, &RTC_TimeStructure);

        RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = RTC_TimeStructure.RTC_Hours;
  RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = RTC_TimeStructure.RTC_Minutes;
  RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = RTC_TimeStructure.RTC_Seconds+sec;
  RTC_AlarmStructure.RTC_AlarmDateWeekDay = 0x31;
  RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date;
  RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_DateWeekDay;
  RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure);
        
        RTC_ITConfig(RTC_IT_ALRA, ENABLE);
        RTC_AlarmCmd(RTC_Alarm_A, ENABLE);
}




主函数 这样调用的
int main(void)
{
        RTC_TimeTypeDef RTC_TimeStruct;
        RccHSI_Init();
//        HardwareInit();
        SysTick_Init();//systick
        Rtc_Init();//rtc
        RtcAlarm_Init();//alarm        
        StateLed_Init();//led

        RTC_TimeStruct.RTC_Hours=0;
        RTC_TimeStruct.RTC_Minutes=0;
        RTC_TimeStruct.RTC_Seconds=0;
        RTC_SetTime(RTC_Format_BIN,&RTC_TimeStruct);
        
        STATELEDON();
        SystickDelay(100);
        STATELEDOFF();
        SystickDelay(100);
        RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);
        
        
        SetnStartAlarmTest(10);
  while (1)
  {
               
  }
}

搞了 一整天了 ,没有一点眉目,,求助来了

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

395

主题

395

帖子

0

粉丝