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

请问有没有人遇到过 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版