OpenEdv-开源电子网

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

STM32F4的RTC时钟突然变成2000年1月1日,这是啥原因啊

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-6-21
在线时间
4 小时
发表于 2019-6-21 14:36:42 | 显示全部楼层 |阅读模式
1金钱
STM32F4VCT6的RTC运行的好好的,突然变成2000年1月1日0时0分0秒,晶振起振是正常的。在线调试发现代码里面确实读出来的时间一直是2000年1月1日0时0分0秒,不随时间推进而变化;现在已经出现2块电路板(300块使用中)有这个现象了。

监测设备的时间

监测设备的时间
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2019-6-22 02:42:31 | 显示全部楼层
你的晶振肯定有问题吧?都不走时间。
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-6-21
在线时间
4 小时
 楼主| 发表于 2019-6-28 09:54:27 | 显示全部楼层
正点原子 发表于 2019-6-22 02:42
你的晶振肯定有问题吧?都不走时间。

晶振是正常的,
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-6-21
在线时间
4 小时
 楼主| 发表于 2019-6-28 09:58:08 | 显示全部楼层
正点原子 发表于 2019-6-22 02:42
你的晶振肯定有问题吧?都不走时间。

if(RTC_ReadBackupRegister(RTC_BKP_DR0)!=0x5050)                //
        {
                RCC_LSEConfig(RCC_LSE_ON);//
                while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)        //
                        {
                        retry++;
                        delay_ms(10);
                        }
                if(retry==0)return 1;                //
                       
                RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);                //
                RCC_RTCCLKCmd(ENABLE);        //

    RTC_InitStructure.RTC_AsynchPrediv = 0x7F;/
    RTC_InitStructure.RTC_SynchPrediv  = 0xFF;//
    RTC_InitStructure.RTC_HourFormat   = RTC_HourFormat_24;//
    RTC_Init(&RTC_InitStructure);

                RTC_Set_Time(23,59,56,RTC_H12_AM);        //
                RTC_Set_Date(17,9,18,1);                //
         
                RTC_WriteBackupRegister(RTC_BKP_DR0,0x5050);        //
        }
示波器看过晶振,是正常的。重新上电也试过。
后面发现 ,必须把后备寄存器的标志清一下  重新配置才能正常,有点理解不了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2019-6-29 02:51:24 | 显示全部楼层
wsntuntun 发表于 2019-6-28 09:58
if(RTC_ReadBackupRegister(RTC_BKP_DR0)!=0x5050)                //
        {
                RCC_LSEConfig(RCC_LSE_ON);//

现在ok了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-6-21
在线时间
4 小时
 楼主| 发表于 2019-7-17 10:46:35 | 显示全部楼层

这样需要在代码中实时判断RTC是否还原到了MCU初始时间,然后是否擦除后部寄存器再初始化。     这种情况很奇特,这个RTC单元。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2019-7-18 02:18:49 | 显示全部楼层
wsntuntun 发表于 2019-7-17 10:46
这样需要在代码中实时判断RTC是否还原到了MCU初始时间,然后是否擦除后部寄存器再初始化。     这种情况 ...

不应该,有我们开发板可以试试么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-6-21
在线时间
4 小时
 楼主| 发表于 2019-7-22 15:34:45 | 显示全部楼层
正点原子 发表于 2019-7-18 02:18
不应该,有我们开发板可以试试么?

自己想制造这种异常情况没有合适的办法,现在出现400多块板子,有三块出现这种现象。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2019-7-26
在线时间
2 小时
发表于 2019-8-14 22:26:09 | 显示全部楼层
wsntuntun 发表于 2019-7-22 15:34
自己想制造这种异常情况没有合适的办法,现在出现400多块板子,有三块出现这种现象。

我的板子RTC时钟不刷新,如果在读取函数后面加3秒延时可以刷新,时好时坏。怎么办?
回复

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2018-8-4
在线时间
38 小时
发表于 2022-8-10 11:46:30 | 显示全部楼层
楼主  我也遇到了这个情况,你这个问题解决了吗
回复

使用道具 举报

1

主题

50

帖子

0

精华

高级会员

Rank: 4

积分
802
金钱
802
注册时间
2012-7-19
在线时间
111 小时
发表于 2022-8-11 09:16:22 | 显示全部楼层
检查RTC供电电路看看,是不是出问题了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 09:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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