OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2828|回复: 1

stm32 RTC设置多组闹钟

[复制链接]

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-5-3
在线时间
31 小时
发表于 2018-5-10 22:04:00 | 显示全部楼层 |阅读模式
现在想用stm32f103单片机设置闹钟,是每天10个甚至更多个闹钟,我该怎么设置,下面这个是每天一次定点闹钟的核心代码,但每天多次我就不知道该怎么设置了


//闹钟设置  
//hour,min,sec:闹钟的时分秒   
//返回值:0,成功;其他:错误代码.
u8 RTC_Alarm_hms(u8 hour,u8 min,u8 sec)
{
        u32 curtime = 0;        //当前时间的值单位秒
        u32 temptime = 0;        //设置的闹钟时间
        u32 destime = 0XFFFFFFFF;//目标闹铃时间(s)设定到最大
       
//        curtime = RTC->CNTH;//得到计数器中的值(秒钟数)
//  curtime<<=16;
//  curtime += RTC->CNTL;   
        curtime = RTC_GetCounter();         //得到计数器中的值,秒钟数
  temptime = curtime/86400; //得到当前运行天数
  temptime = temptime*86400;//得到当前运行天数的秒中数
  temptime += hour*3600 + min*60 + sec;//得到定时闹钟的秒中数
  if(temptime<=curtime)//执行时间已过,推迟到明天
                temptime+=86400;
  destime=temptime;//更改闹钟寄存器       
                    
        //设置时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);        //使能PWR和BKP外设时钟   
        PWR_BackupAccessCmd(ENABLE);        //使能后备寄存器访问  
        //上面三步是必须的!
       
        RTC_SetAlarm(destime);

        RTC_WaitForLastTask();        //等待最近一次对RTC寄存器的写操作完成         
       
        return 0;            
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-5-3
在线时间
31 小时
 楼主| 发表于 2018-5-11 09:53:23 | 显示全部楼层
有人做过这方面的东西吗?求指教一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 04:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表