初级会员

- 积分
- 81
- 金钱
- 81
- 注册时间
- 2016-5-3
- 在线时间
- 31 小时
|
现在想用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;
}
|
|