RTC闹钟能设置每天吗?

2019-07-20 04:11发布

原子哥的例程,是针对某一天。楼主想设置每天
[mw_shl_code=c,true]
void RTC_Set_AlarmA(u8 week,u8 hour,u8 min,u8 sec)
{
        EXTI_InitTypeDef   EXTI_InitStructure;
        RTC_AlarmTypeDef RTC_AlarmTypeInitStructure;
        RTC_TimeTypeDef RTC_TimeTypeInitStructure;
        
        RTC_AlarmCmd(RTC_Alarm_A,DISABLE);//1رÕÄÖÖóA
        
  RTC_TimeTypeInitStructure.RTC_Hours=hour;//D¡ê±
        RTC_TimeTypeInitStructure.RTC_Minutes=min;//·ÖÖó
        RTC_TimeTypeInitStructure.RTC_Seconds=sec;//Ãë
        RTC_TimeTypeInitStructure.RTC_H12=RTC_H12_AM;
  
        RTC_AlarmTypeInitStructure.RTC_AlarmDateWeekDay=week;//DÇÆú
        RTC_AlarmTypeInitStructure.RTC_AlarmDateWeekDaySel=RTC_AlarmDateWeekDaySel_WeekDay;//°′DÇÆúÄÖ
        RTC_AlarmTypeInitStructure.RTC_AlarmMask=RTC_AlarmMask_None;//¾«è·Æ¥ÅäDÇÆú£¬ê±·ÖÃë
        RTC_AlarmTypeInitStructure.RTC_AlarmTime=RTC_TimeTypeInitStructure;
  RTC_SetAlarm(RTC_Format_BIN,RTC_Alarm_A,&RTC_AlarmTypeInitStructure);

        
        RTC_ClearITPendingBit(RTC_IT_ALRA);//Çå3yRTCÄÖÖóAμıêÖ¾
  EXTI_ClearITPendingBit(EXTI_Line17);//Çå3yLINE17éÏμÄÖD¶Ï±ê־λ
        
        RTC_ITConfig(RTC_IT_ALRA,ENABLE);//¿aÆôÄÖÖóAÖD¶Ï
        RTC_AlarmCmd(RTC_Alarm_A,ENABLE);//¿aÆôÄÖÖóA
        
        EXTI_InitStructure.EXTI_Line = EXTI_Line17;//LINE17
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//ÖD¶Ïê¼t
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //éÏéyÑØ′¥·¢
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;//ê1ÄüLINE17
  EXTI_Init(&EXTI_InitStructure);//ÅäÖÃ

        NVIC_InitStructure.NVIC_IRQChannel = RTC_Alarm_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}
[/mw_shl_code]


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
烈日灼心
1楼-- · 2019-07-20 23:14
  解决了么??
Sanjay
2楼-- · 2019-07-21 04:44
本帖最后由 Sanjay 于 2019-1-10 20:53 编辑

RTC闹钟设置每天,也就是理解为每天的某个时间闹钟响起,那么我们需要设置闹钟也就只需要设置小时、分钟、秒了。以下是我用HAL库配置的,有两个特别要注意的点:
(1)sAlarm.AlarmMask = RTC_ALARMMASK_DATEWEEKDAY;意思是屏蔽掉日期和星期,那么就只有小时、分钟、秒了
(2)sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_WEEKDAY; sAlarm.AlarmDateWeekDay = 1; 这里一定要配置,否则会导致闹钟失败,然后莫名其妙的在最近的一个60秒走完后闹钟执行60次。
具体代码如下:
Sanjay
3楼-- · 2019-07-21 06:32
 精彩回答 2  元偷偷看……
Sanjay
4楼-- · 2019-07-21 07:45
 精彩回答 2  元偷偷看……
Sanjay
5楼-- · 2019-07-21 09:48
774458291 发表于 2018-10-27 15:55
楼主解决了吗,RTC闹钟设置每天的

看我的回复

一周热门 更多>