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

RTC闹钟低功耗唤醒

[复制链接]
taozefeng1 提问时间:2018-8-15 18:40 /
想做个闹钟低功耗唤醒的,可以闹钟的配置有问题,始终无法进入闹钟的中断,求各位大神看看,配置上哪里有问题了。接下来贴代码
void Calendar_Init(void)
{
  //选择LSE(32.768KHz)作为时钟源
  //CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);   

  RTC_DeInit(); //初始化默认状态

  //选择LSI(38KHz)作为时钟源
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);   

  //打开RTC 时钟
  CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
  /* RTC 时钟源:LSE,计时时间:32768/128/256 = 1S */
  RTC_InitStr.RTC_HourFormat = RTC_HourFormat_24;//24 小时制
  //RTC_InitStr.RTC_AsynchPrediv = 0x7F; //异步分频器128 分频
  //RTC_InitStr.RTC_SynchPrediv = 0x00FF; //同步分频器256 分频

  /* RTC 时钟源:LSI,计时时间:38000/38/1000 = 1S */
  RTC_InitStr.RTC_AsynchPrediv = 0x25;     //异步分频器38 分频
  RTC_InitStr.RTC_SynchPrediv = 0x03E7;    //同步分频器1000 分频

  RTC_Init(&RTC_InitStr); //初始化RTC 参数
  /* 初始化RTC_DateStr 结构体,设置日期数据*/
  RTC_DateStructInit(&RTC_DateStr); //初始化RTC_DateStr 结构体   
  RTC_DateStr.RTC_WeekDay = RTC_Weekday_Thursday;//星期四
  RTC_DateStr.RTC_Date = 03; //3 日
  RTC_DateStr.RTC_Month = RTC_Month_January; //1 月
  RTC_DateStr.RTC_Year = 18; //2018 年
  RTC_SetDate(RTC_Format_BIN, &RTC_DateStr); //设置日期数据
  /* 初始化RTC_TimeStr 结构体,设置时间数据*/
  RTC_TimeStructInit(&RTC_TimeStr);//初始化RTC_TimeStr 结构体
  RTC_TimeStr.RTC_Hours = 23; //23H
  RTC_TimeStr.RTC_Minutes = 55; //55 分      
  RTC_TimeStr.RTC_Seconds = 00; //0 秒
  RTC_SetTime(RTC_Format_BIN, &RTC_TimeStr); //设置时间数据
  RTC_AlarmStructInit(&RTC_AlarmStr);   
  RTC_AlarmStr.RTC_AlarmTime.RTC_Hours = 23;
  RTC_AlarmStr.RTC_AlarmTime.RTC_Minutes = 55;      
  RTC_AlarmStr.RTC_AlarmTime.RTC_Seconds = 30;  
  RTC_AlarmStr.RTC_AlarmMask = RTC_AlarmMask_Hours | RTC_AlarmMask_Minutes | RTC_AlarmMask_Seconds;
  RTC_SetAlarm(RTC_Format_BIN,&RTC_AlarmStr);  

  RTC_GetAlarm(RTC_Format_BIN,&RTC_AlarmStr);
  RTC_AlarmSubSecondConfig(100,RTC_AlarmSubSecondMask_None);

  RTC_AlarmCmd(ENABLE);   
  RTC_ITConfig(RTC_IT_ALRA,ENABLE);
}


中断部分代码
if(RTC_GetITStatus(RTC_IT_ALRA) != RESET)
    {
      RTC_ClearITPendingBit(RTC_IT_ALRA);
    }
    else if(RTC_GetITStatus(RTC_IT_WUT) != RESET)
    {
      RTC_WakeUpCmd(DISABLE);
      RTC_ClearITPendingBit(RTC_IT_WUT);
    }
    RTC_ClearITPendingBit(RTC_IT_ALRA);



求指导,
收藏 评论7 发布时间:2018-8-15 18:40

举报

7个回答
taozefeng1 回答时间:2018-8-15 19:33:41
没人做过这个东东么?
taozefeng1 回答时间:2018-8-15 19:34:09
taozefeng1 发表于 2018-8-15 19:33
没人做过这个东东么?

一直看英文文档, 看的感觉要疯了,关键是看了,还不明白表达的什么意思。。
taozefeng1 回答时间:2018-8-15 20:12:17
已解决。

点评

怎么解决的啊  发表于 2018-8-16 09:56
jiekechoo 回答时间:2018-8-27 01:37:48

怎么解决?
robter 回答时间:2018-10-14 20:17:33
很好的资料,学习了
纯牛奶yq 回答时间:2019-4-11 15:02:16
楼主闹钟中断可以唤醒halt模式吗?我用wakeup中断可以唤醒,闹钟唤醒是怎么实现的

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版