OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32/FPGA开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 1236|回复: 5

关于RTC的问题

[复制链接]

13

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2017-7-7
在线时间
39 小时
发表于 2017-11-21 16:59:28 | 显示全部楼层 |阅读模式
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位的秒钟值。
回复

使用道具 举报

542

主题

10万

帖子

32

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
141284
金钱
141284
注册时间
2010-12-1
在线时间
1482 小时
发表于 2017-11-21 16:59:29 | 显示全部楼层
闹钟就是个寄存器,秒钟是另外一个寄存器,两个值相等,就产生中断,原理就这么简单。你把任何一个时间,都可以换算成一个32位的秒钟值。
回复

使用道具 举报

32

主题

1598

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3874
金钱
3874
注册时间
2016-5-29
在线时间
585 小时
发表于 2017-11-21 17:21:33 | 显示全部楼层
RTC的功能.SMT32F051比较先进..你用的是哪个型号的芯片
回复

使用道具 举报

13

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
282
金钱
282
注册时间
2017-7-7
在线时间
39 小时
 楼主| 发表于 2017-11-22 08:49:14 | 显示全部楼层
操作系统 发表于 2017-11-21 17:21
RTC的功能.SMT32F051比较先进..你用的是哪个型号的芯片

STM32F103C8
回复

使用道具 举报

32

主题

1598

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3874
金钱
3874
注册时间
2016-5-29
在线时间
585 小时
发表于 2017-11-22 09:06:21 | 显示全部楼层
STM32F103C8的RTC是一个计秒器罢了.相对来说比较简单.容易操作.初始化应该找得到吧.
回复

使用道具 举报

头像被屏蔽

0

主题

210

帖子

0

精华

禁止发言

积分
277
金钱
277
注册时间
2019-3-4
在线时间
4 小时
发表于 2019-3-26 08:11:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

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

本版积分规则



关闭

正点原子STM32/FPGA资料免费下载上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2019-5-27 03:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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