OpenEdv-开源电子网

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

咱们RTC时钟案例的时间为什么开始的时候总是2014年,怎么改呢?

[复制链接]

7

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2015-4-26
在线时间
1 小时
发表于 2015-5-11 10:53:36 | 显示全部楼层 |阅读模式
5金钱
我在rtc_init里改了也没用,还是2014年,而且我搜索了整个工程,也没找到在2014这个关键字,到底是在那设置的呢?

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=c,true]u8 RTC_Init(void) { //检查是不是第一次配置时钟 u8 temp=0; RTC_NVIC_Config(); //if(BKP->DR1!=0X5050)//第一次配置 if (BKP_ReadBackupRegister(BKP_DR1) != 0x5050) //从指定的后备寄存器中读出数据:读出了与写入的指定数据不相等 { /* Enable PWR and BKP clocks */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能PWR和BKP外设时钟 / ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2015-5-11 10:53:37 | 显示全部楼层
[mw_shl_code=c,true]u8 RTC_Init(void) { //检查是不是第一次配置时钟 u8 temp=0; RTC_NVIC_Config(); //if(BKP->DR1!=0X5050)//第一次配置 if (BKP_ReadBackupRegister(BKP_DR1) != 0x5050) //从指定的后备寄存器中读出数据:读出了与写入的指定数据不相等 { /* Enable PWR and BKP clocks */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能PWR和BKP外设时钟 /* Allow access to BKP Domain */ PWR_BackupAccessCmd(ENABLE); //使能RTC和后备寄存器访问 /* Reset Backup Domain */ BKP_DeInit(); //将外设BKP的全部寄存器重设为缺省值 /* Enable LSE */ RCC_LSEConfig(RCC_LSE_ON); //设置外部低速晶振(LSE),使用外设低速晶振 /* Wait till LSE is ready */ while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) //检查指定的RCC标志位设置与否,等待低速晶振就绪 { temp++; delay_ms(10); } if(temp>=250)return 1;//初始化时钟失败,晶振有问题 /* Select LSE as RTC Clock Source */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //设置RTC时钟(RTCCLK),选择LSE作为RTC时钟 /* Enable RTC Clock */ RCC_RTCCLKCmd(ENABLE); //使能RTC时钟 /* Wait for RTC registers synchronization */ RTC_WaitForSynchro(); //等待最近一次对RTC寄存器的写操作完成 /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 /* Enable the RTC Second */ RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能RTC秒中断 /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 /* Set RTC prescaler: set RTC period to 1sec */ /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */ RTC_SetPrescaler(32767); //设置RTC预分频的值 /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 RTC_Set(2011,12,20,10,0,0); //设置时间 BKP_WriteBackupRegister(BKP_DR1, 0X5050); //向指定的后备寄存器中写入用户程序数据 } else//系统继续计时 { /* Check if the Power On Reset flag is set */ if (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET) //检查指定的RCC标志位设置与否OR/PDR复位 { //printf("\rPower On Reset occurred...."); } /* Check if the Pin Reset flag is set */ else if (RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET) //检查指定的RCC标志位设置与否:管脚复位 { //printf("\rExternal Reset occurred...."); } //printf("\rNo need to configure RTC...."); /* Wait for RTC registers synchronization */ RTC_WaitForSynchro(); //等待最近一次对RTC寄存器的写操作完成 /* Enable the RTC Second */ RTC_ITConfig(RTC_IT_SEC, ENABLE); //使能RTC秒中断 /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成 } RTC_Get();//更新时间 /* Clear reset flags */ RCC_ClearFlag(); //清除RCC的复位标志位 return 0; //ok }[/mw_shl_code]
注意看这句,一般没有电池的时候就是2011年了。
RTC_Set(2011,12,20,10,0,0);  //设置时间
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

5

主题

424

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1020
金钱
1020
注册时间
2014-9-4
在线时间
199 小时
发表于 2015-5-11 14:13:43 | 显示全部楼层
//syear,smon,sday,hour,min,sec:年月日时分秒
//返回值:设置结果。0,成功;1,失败。
u8 RTC_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec)
https://github.com/WZTENG
回复

使用道具 举报

22

主题

109

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2015-5-28
在线时间
0 小时
发表于 2015-9-26 21:17:32 | 显示全部楼层
回复【3楼】fanghuiopenedv:
---------------------------------
亲  在这句话RTC_Set(2011,12,20,10,0,0);  //设置时间
我已经修改了,可是时间不变呀
再不玩命努力,你就老了
回复

使用道具 举报

30

主题

705

帖子

1

精华

新手上路

积分
21
金钱
21
注册时间
2013-3-14
在线时间
52 小时
发表于 2015-9-28 15:19:34 | 显示全部楼层
回复【4楼】逍遥居士_888:
---------------------------------
没有电池的时候初始化才进入这句的。如果安装了电池这个if就进不来了。
原子哥是不是又要出黑科技了呀。^_^...
回复

使用道具 举报

22

主题

109

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2015-5-28
在线时间
0 小时
发表于 2015-10-11 09:23:43 | 显示全部楼层
回复【5楼】fanghuiopenedv:
---------------------------------
O(∩_∩)O哈哈~  亲 
装电池也是,后来我试验找到如何解决了,但是没有找到问题
再不玩命努力,你就老了
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2018-2-6
在线时间
0 小时
发表于 2018-2-6 11:42:01 | 显示全部楼层
if (BKP_ReadBackupRegister(BKP_DR1) != 0x4050)
后备时钟确认修改参数改一下
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2019-12-9
在线时间
20 小时
发表于 2020-4-15 09:39:17 | 显示全部楼层
设置的是2011年,那怎么跑到了2014年
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 05:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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