OpenEdv-开源电子网

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

下载程序以后,RTC时间没有重新设置?

[复制链接]

27

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2015-4-25
在线时间
70 小时
发表于 2015-9-27 22:14:18 | 显示全部楼层 |阅读模式
5金钱
rt,下载程序以后,rtc的时间还是一直在运行的时间,并没有被初始化,不知道为什么,请帮看一下

最佳答案

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

重新下载程序,后备寄存器不会被檫除,所以时间不会重新初始化!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
119
金钱
119
注册时间
2015-9-27
在线时间
23 小时
发表于 2015-9-27 22:14:19 | 显示全部楼层
重新下载程序,后备寄存器不会被檫除,所以时间不会重新初始化!
回复

使用道具 举报

27

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2015-4-25
在线时间
70 小时
 楼主| 发表于 2015-9-27 22:23:05 | 显示全部楼层
u8 My_RTC_Init(void)
{
RTC_InitTypeDef RTC_InitStructure;
u16 retry=0X1FFF; 
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能PWR时钟
PWR_BackupAccessCmd(ENABLE); //使能后备寄存器访问 

if(RTC_ReadBackupRegister(RTC_BKP_DR0)!=0x5050) //是否第一次配置?
{
RCC_LSEConfig(RCC_LSE_ON);//LSE 开启    
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) //检查指定的RCC标志位设置与否,等待低速晶振就绪
{
retry++;
delay_ms(10);
}
if(retry==0)return 1; //LSE 开启失败. 

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //设置RTC时钟(RTCCLK),选择LSE作为RTC时钟    
RCC_RTCCLKCmd(ENABLE); //使能RTC时钟 

        RTC_InitStructure.RTC_AsynchPrediv = 0x7F;//RTC异步分频系数(1~0X7F)
        RTC_InitStructure.RTC_SynchPrediv  = 0xFF;//RTC同步分频系数(0~7FFF)
        RTC_InitStructure.RTC_HourFormat   = RTC_HourFormat_24;//RTC设置为,24小时格式
        RTC_Init(&RTC_InitStructure);
 
RTC_Set_Time(23,59,56,RTC_H12_AM); //设置时间
RTC_Set_Date(15,9,27,7); //设置日期
 
RTC_WriteBackupRegister(RTC_BKP_DR0,0x5050); //标记已经初始化过了

 
return 0;
}
问题是不是在这个程序里的,“是否第一次配置”这个条件上?
回复

使用道具 举报

27

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2015-4-25
在线时间
70 小时
 楼主| 发表于 2015-9-28 07:17:21 | 显示全部楼层
回复【3楼】陈尕杰:
---------------------------------
谢谢,请问怎么处理这种情况,能给个思路吗?
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-9-28 08:05:59 | 显示全部楼层
回复【4楼】kinshen:
---------------------------------
把那个锂电池抠了就可以了
学无止境
回复

使用道具 举报

27

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2015-4-25
在线时间
70 小时
 楼主| 发表于 2015-9-28 09:08:04 | 显示全部楼层
回复【5楼】jermy_z:
---------------------------------
f4开发板扣电池好麻烦的。是不是可以程序里把RTC_WriteBackupRegister(RTC_BKP_DR0,0x0000);放在条件之前,待会再去掉!
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13135
金钱
13135
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-9-28 09:15:41 | 显示全部楼层
回复【6楼】kinshen:
---------------------------------
你把那个if那条语句注释掉就可以了
学无止境
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-8-31
在线时间
0 小时
发表于 2015-9-28 17:35:43 | 显示全部楼层
还有个RTC_Set函数。用这个就可以设置。
或者在串口里通过usmart调用rtc_set
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-7-10
在线时间
9 小时
发表于 2019-7-27 13:23:05 | 显示全部楼层
有一个检查是不是第一次配置时钟的if语句,判断正确才会进入重新设置时钟的部分,弄个变量让它进一次就行了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 14:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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