中级会员
- 积分
- 294
- 金钱
- 294
- 注册时间
- 2017-7-7
- 在线时间
- 42 小时
|
2金钱
原子哥在RTC这个程序中我好像没看到你有使能闹钟或是配置闹钟或是调用闹钟的初始化,为什么能检测到闹钟中断?另外对闹钟的概念有点模糊,是必须设置秒钟让它计时然后才能设置闹钟的值吗?另欢迎各路大神指点神通,先行谢过
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //设置RTC时钟(RTCCLK),选择LSE作为RTC时钟
RCC_RTCCLKCmd(ENABLE); //使能RTC时钟
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成
RTC_WaitForSynchro(); //等待RTC寄存器同步
RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能RTC秒中断
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成
RTC_EnterConfigMode();/// 允许配置
RTC_SetPrescaler(32767); //设置RTC预分频的值
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成
RTC_Set(2015,1,14,17,42,55); //设置时间
RTC_ExitConfigMode(); //退出配置模式
BKP_WriteBackupRegister(BKP_DR1, 0X5050); //向指定的后备寄存器中写入用户程序数据
if (RTC_GetITStatus(RTC_IT_SEC) != RESET)//秒钟中断
{
RTC_Get();//更新时间
}
if(RTC_GetITStatus(RTC_IT_ALR)!= RESET)//闹钟中断
{
RTC_ClearITPendingBit(RTC_IT_ALR); //清闹钟中断
RTC_Get(); //更新时间
printf("Alarm Time:%d-%d-%d %d:%d:%d\n",calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec);//输出闹铃时间
}
|
-
没看到有配置闹钟阿
-
没看到有调用闹钟初始化阿
最佳答案
查看完整内容[请看2#楼]
闹钟就是个寄存器,秒钟是另外一个寄存器,两个值相等,就产生中断,原理就这么简单。你把任何一个时间,都可以换算成一个32位的秒钟值。
|