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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版