打印
[STM32F1]

这个函数是不是取出从1970年到现在的秒钟数?

[复制链接]
570|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bqyj|  楼主 | 2021-6-1 23:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

timecount=RTC_GetCounter();
请问高手,这个函数是不是取出从1970年到现在的秒钟数?谢谢!

使用特权

评论回复
沙发
wenfen| | 2021-6-1 23:15 | 只看该作者
RTC只负责秒计数,具体的时间点是由获取时间年月日点分秒的算式决定的。

使用特权

评论回复
板凳
zhuhuis| | 2021-6-1 23:17 | 只看该作者

TimePtr->Year = (4U * (Days / ((4U * 365U) + 1U))) + 2000U; /* Year */
2000就是2000年

使用特权

评论回复
地板
pengf| | 2021-6-1 23:19 | 只看该作者
RTC_GetCounter()这个函数什么功能

使用特权

评论回复
5
gongche| | 2021-6-1 23:21 | 只看该作者

获取计数值;
具体时间还需要软件计算的;

使用特权

评论回复
6
huwr| | 2021-6-1 23:23 | 只看该作者
返回计数值
/**
  * @brief  Gets the RTC counter value.
  * @param  None
  * @retval RTC counter value.
  */
uint32_t RTC_GetCounter(void)
{
  uint16_t high1 = 0, high2 = 0, low = 0;

  high1 = RTC->CNTH;
  low   = RTC->CNTL;
  high2 = RTC->CNTH;

  if (high1 != high2)
  { /* In this case the counter roll over during reading of CNTL and CNTH registers,
       read again CNTL register then return the counter value */
    return (((uint32_t) high2 << 16 ) | RTC->CNTL);
  }
  else
  { /* No counter roll over during reading of CNTL and CNTH registers, counter
       value is equal to first value of CNTL and CNTH */
    return (((uint32_t) high1 << 16 ) | low);
  }
}

使用特权

评论回复
7
huanghuac| | 2021-6-1 23:25 | 只看该作者

返回的计数值是不是从1970年1月1日0时0分0秒到现在的秒钟计数值?
这么理解对吗

使用特权

评论回复
8
happy_10| | 2021-6-1 23:27 | 只看该作者
除了这个函数你还需要日历时间函数,相对时间点是日历时间函数的常量

使用特权

评论回复
9
gongche| | 2021-6-1 23:29 | 只看该作者
是不是说这个函数,RTC_Set(2017,10,17,17,51,20);
比如我设置了日期时间,2017年10月17日17时51分20秒。
然后我timecount=RTC_GetCounter();
那么timecount里面就是从1970年1月1日0时0分0秒到2017年
10月17日17时51分,秒可能走了几秒钟这之间的秒数?

使用特权

评论回复
10
wenfen| | 2021-6-1 23:31 | 只看该作者

RTC1_GetTime 和RTC1_SetTime是一对,set是多少get就是多少,相对的
你把RTC1_GetTime 和RTC1_SetTime 里的2000 全部替换成1970,相对时间点就是1970年1月1日

使用特权

评论回复
11
tian111| | 2021-6-1 23:34 | 只看该作者
软件做。

使用特权

评论回复
12
zhuhuis| | 2021-6-1 23:40 | 只看该作者
对的,需要软件做

使用特权

评论回复
13
huanghuac| | 2021-6-1 23:40 | 只看该作者
RTCCount=RTC_GetCounter();//获得计数值并计算当前时钟/*Computehours*/

THH=RTCCount/3600;/*Computeminutes*/

TMM=(RTCCount%3600)/60;/*Computeseconds*/

TSS=(RTCCount%3600)%60;

这是通过RTC_GetCounter();函数获取计数值,然后把这个计数值分别用小时、分钟、秒来表示的过程。最后还需要调用printf函数把它显示出来。

使用特权

评论回复
14
zhuhuis| | 2021-6-1 23:43 | 只看该作者
你用上面的方法,打印出时间后,看看是哪一年的就行了。

使用特权

评论回复
15
chenho| | 2021-6-1 23:45 | 只看该作者
从1970年到你设置那个时刻总共是多少秒。有些是这样的。不过这个年份你是可以设置的,因此不用纠结。

使用特权

评论回复
16
bqyj|  楼主 | 2021-6-1 23:47 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

390

主题

4526

帖子

2

粉丝