请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

请问有没有人遇到过 rtc闹钟唤醒不了低功耗

[复制链接]
zymwjm 提问时间:2018-6-12 18:14 /
rtc闹钟都配置好了,就是到点之后唤醒不了
===============rtc配置=======================
  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);

    /*使能 RTC Wakeup 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_AlarmCmd(RTC_Alarm_A,DISABLE);  才能使用RTC_SetAlarm
               
                        ret = RTC_AlarmCmd(RTC_Alarm_A,DISABLE);
               
                printf("ret = %d\r\n",ret);
               
                RTC_AlarmStruct.RTC_AlarmTime.RTC_H12=RTC_HourFormat_24;
                RTC_AlarmStruct.RTC_AlarmTime.RTC_Hours=9;
                RTC_AlarmStruct.RTC_AlarmTime.RTC_Minutes=59;
                RTC_AlarmStruct.RTC_AlarmTime.RTC_Seconds=20;
               
//                RTC_AlarmStruct.RTC_AlarmDateWeekDay=
//                        RTC_AlarmStruct.RTC_AlarmDateWeekDaySel=
                RTC_AlarmStruct.RTC_AlarmMask=RTC_AlarmMask_Seconds | RTC_AlarmMask_Minutes | RTC_AlarmMask_Hours;
               
                RTC_SetAlarm(RTC_Format_BIN,RTC_Alarm_A,&RTC_AlarmStruct);
               
                RTC_ClearFlag(RTC_FLAG_ALRAF)

===================主函数调用=========================

while(1)
PWR_EnterSTOPMode( PWR_Regulator_LowPower, PWR_STOPEntry_WFI );
//进去之后就出不来了  求指导

收藏 评论9 发布时间:2018-6-12 18:14

举报

9个回答
feixiang20 回答时间:2018-6-12 23:47:20
确认STM32使用RTC唤醒停止模式的设置正确么。可参阅相关资料

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

TLLED 回答时间:2018-6-13 08:44:16
进入停止模式后,有没有试过通过外部中断是否能唤醒。
TLLED 回答时间:2018-6-13 08:49:25
停机模式下的唤醒的中断函数需要注意这两点:
1:对于程序可能产生的标志位必须的清除干净,不清除会出现唤醒失灵现象!!
2:由于停机下所有时钟关闭,所以唤醒需要重新配置时钟!!

参考代码:
char Wakeflag=0;

void RTCAlarm_IRQHandler(void)
{
if(RTC_GetFlagStatus(RTC_IT_ALR))
{
EXTI_ClearITPendingBit(EXTI_Line17);
RTC_ClearITPendingBit(RTC_IT_ALR);
RTC_WaitForLastTask();
EXTI_ClearITPendingBit(EXTI_Line7);
EXTI_ClearITPendingBit(EXTI_Line1);//对于程序可能产生的标志位必须的清除干净,不清除会出现唤醒失灵现象!!

      if(PWR_GetFlagStatus(PWR_FLAG_WU) != RESET)
        {
PWR_ClearFlag(PWR_FLAG_WU);//一般没用
        }
SystemInit();//重要,由于停机下对所有时钟关闭,所以唤醒需要重新配置时钟!!

       Wakeflag=!Wakeflag;
GPIO_WriteBit(GPIOA, GPIO_Pin_5, Wakeflag);//LED灯指示

}
}

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

zymwjm 回答时间:2018-6-13 20:49:51
TLLED 发表于 2018-6-13 08:49
停机模式下的唤醒的中断函数需要注意这两点:
1:对于程序可能产生的标志位必须的清除干净,不清除会出现唤 ...

谢谢
zymwjm 回答时间:2018-6-13 20:50:18
feixiang20 发表于 2018-6-12 23:47
确认STM32使用RTC唤醒停止模式的设置正确么。可参阅相关资料

是对照着芯片手册弄的
废鱼 回答时间:2018-6-14 08:31:30
               RTC_AlarmStruct.RTC_AlarmMask=RTC_AlarmMask_Seconds | RTC_AlarmMask_Minutes | RTC_AlarmMask_Hours;
                这里是把不需要用到的屏蔽掉。按现在的设置应该是到了对应的日期或者星期才会唤醒。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

空大大 回答时间:2018-8-14 15:44:52

请问下,我也出现这个问题,您现在解决了吗?
空大大 回答时间:2018-8-14 15:46:32
楼主,我也遇到这个问题,问下你解决了没
zjAngel 回答时间:2019-11-6 10:54:30
RTC_ITConfig(RTC_IT_ALRA, ENABLE); //开启闹钟A中断  //必须加入这句话,否则进入不了中断
我也遇到了这个问题,假如这句话之后就能进入中断了

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版