OpenEdv-开源电子网

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

STM32F4 RTC中途设置时间无效?

[复制链接]

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2018-8-24
在线时间
32 小时
发表于 2020-7-24 10:42:40 | 显示全部楼层 |阅读模式
1金钱
初始化正常,时间也能正常跑,但在中途进行时间设置的话,老是不生效。debug进里面看,发现在RTC_EnterInitMode()里,RTC_ISR_INITF一直没有置位,请问这是因为啥?(另外,这个板子我用cubemx生成了一个hal库的rtc工程,使用lsi,也能正常跑时间,闹钟,中途设置时间,所以板子本身应该是没问题的吧。)
  1. stime.RTC_Hours=0x16;
  2.                         stime.RTC_Minutes=0x32;
  3.                         stime.RTC_Seconds=0x51;
  4.                         s1=RTC_SetTime(RTC_Format_BCD,&stime);
  5.                        

  6.                         sdate.RTC_Year=0x21;
  7.                         sdate.RTC_Month=0x2;
  8.                         sdate.RTC_Date=0x6;
  9.                         s2=RTC_SetDate(RTC_Format_BCD,&sdate);
复制代码



最佳答案

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

解决了。因为RTC的寄存器和普通外设不一样,不让随便操作。 在rtc初始化结尾的时候有调用PWR_BackupAccessCmd(DISABLE); 禁止了所有对RTC寄存器的访问。而这个函数最终写的是PWR_CR的 DBP位,寄存器说明如下图 所以解决方法就很简单了,只需在更新时间的前后加上使能和去使能就行,测试了一下,中途设置时间成功。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2018-8-24
在线时间
32 小时
 楼主| 发表于 2020-7-24 10:42:41 | 显示全部楼层
解决了。因为RTC的寄存器和普通外设不一样,不让随便操作。
在rtc初始化结尾的时候有调用PWR_BackupAccessCmd(DISABLE); 禁止了所有对RTC寄存器的访问。而这个函数最终写的是PWR_CR的 DBP位,寄存器说明如下图
微信图片_20200724111539.png
所以解决方法就很简单了,只需在更新时间的前后加上使能和去使能就行,测试了一下,中途设置时间成功。


回复

使用道具 举报

5

主题

133

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1364
金钱
1364
注册时间
2018-3-5
在线时间
740 小时
发表于 2020-7-24 10:45:30 | 显示全部楼层
写入后,马上读一下,先读时间,再读日期
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-30 19:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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