OpenEdv-开源电子网

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

stm32f401 rtc时间超过24小时的问题

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-9-12
在线时间
0 小时
发表于 2016-9-12 11:33:26 | 显示全部楼层 |阅读模式
1金钱
原子哥及各位大侠,

有一rtc问题请教,我们用的st32f401的芯片,开机后会一直打印rtc时间,跑了一天一夜之后,rtc的小时数超过了24,变成了27小时xx分。
然后我用mdk断电去调试,时间又变成了24小时xx分。RTC_GetTime中 RTC_TimeStruct->RTC_Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16);可以看到此变量为0x24;
RTC_TimeStruct->RTC_Hours = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Hours);的值为0x18.不应该是0吗?

请问各位大侠是否有经验,如何破?
谢谢!

最佳答案

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

设置时间时,增加DayLightSaving,StoreOperation这两个参数,时间就不会超过24小时了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2020-6-4
在线时间
1 小时
发表于 2016-9-12 11:33:27 | 显示全部楼层
设置时间时,增加DayLightSaving,StoreOperation这两个参数,时间就不会超过24小时了
回复

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11475
金钱
11475
注册时间
2014-4-1
在线时间
1297 小时
发表于 2016-9-12 11:44:21 | 显示全部楼层

会有这种事?不太相信。


回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-9-12 11:54:09 | 显示全部楼层
是不是编码格式的问题
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-9-12
在线时间
0 小时
 楼主| 发表于 2016-9-12 12:26:27 | 显示全部楼层
止天 发表于 2016-9-12 11:54
是不是编码格式的问题

用的官方的库。
void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct)
{
  uint32_t tmpreg = 0;

  /* Check the parameters */
  assert_param(IS_RTC_FORMAT(RTC_Format));

  /* Get the RTC_TR register */
  tmpreg = (uint32_t)(RTC->TR & RTC_TR_RESERVED_MASK);
  
  /* Fill the structure fields with the read parameters */
  RTC_TimeStruct->RTC_Hours = (uint8_t)((tmpreg & (RTC_TR_HT | RTC_TR_HU)) >> 16);
  RTC_TimeStruct->RTC_Minutes = (uint8_t)((tmpreg & (RTC_TR_MNT | RTC_TR_MNU)) >>8);
  RTC_TimeStruct->RTC_Seconds = (uint8_t)(tmpreg & (RTC_TR_ST | RTC_TR_SU));
  RTC_TimeStruct->RTC_H12 = (uint8_t)((tmpreg & (RTC_TR_PM)) >> 16);  

  /* Check the input parameters format */
  if (RTC_Format == RTC_Format_BIN)
  {
    /* Convert the structure parameters to Binary format */
    RTC_TimeStruct->RTC_Hours = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Hours);
    RTC_TimeStruct->RTC_Minutes = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Minutes);
    RTC_TimeStruct->RTC_Seconds = (uint8_t)RTC_Bcd2ToByte(RTC_TimeStruct->RTC_Seconds);   
  }
}
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-9-12
在线时间
0 小时
 楼主| 发表于 2016-9-12 12:27:04 | 显示全部楼层
xuande 发表于 2016-9-12 11:44
会有这种事?不太相信。

刚又复现了
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-9-12
在线时间
0 小时
 楼主| 发表于 2016-9-12 15:09:07 | 显示全部楼层
从RTC->TR读出来的值0x00640000,小时对应的是64
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2016-9-12
在线时间
0 小时
 楼主| 发表于 2016-9-12 15:10:06 | 显示全部楼层
nakil 发表于 2016-9-12 15:09
从RTC->TR读出来的值0x00640000,小时对应的是64

PM对应的是1,小时对应的是24,这个值对吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-9-13 23:01:33 | 显示全部楼层
参考下我们例程吧,没有遇到这样的问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-5-30
在线时间
2 小时
发表于 2016-10-20 16:50:56 | 显示全部楼层
我用的F205也遇到同樣的問題,這個社真的,確定不是格式問題。
回复

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2017-1-23 09:01:35 | 显示全部楼层
楼主解决了吗?我这里出现32小时44分了,看寄存器HT是0x03 , HU是0x02
回复

使用道具 举报

20

主题

143

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-8-28
在线时间
108 小时
发表于 2017-1-23 11:23:50 | 显示全部楼层
为什么小时大于24了,却没有自动变为0,天数也没有自动加1,奇怪的现象
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-5-22
在线时间
3 小时
发表于 2019-5-22 09:12:21 | 显示全部楼层
我用stm32l476也出现了这个现象,小时数加到了30多,是什么原因导致的,怎么解决?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2019-6-5
在线时间
0 小时
发表于 2019-6-5 08:44:49 | 显示全部楼层
我用STM32F767,现在也遇到了这个问题
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2019-8-8
在线时间
6 小时
发表于 2019-8-8 14:29:41 | 显示全部楼层
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.HourFormat = RTC_HOURFORMAT_12;
找一下这里看下是不是初始化成12小时制了
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10561
金钱
10561
注册时间
2017-2-18
在线时间
1912 小时
发表于 2021-8-11 14:39:54 | 显示全部楼层
先帝创业未半 发表于 2020-6-4 18:56
设置时间时,增加DayLightSaving,StoreOperation这两个参数,时间就不会超过24小时了

这个方法确实可以~~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 05:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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