打印
[开发工具]

RTC_GetCounter()函数的功能问题

[复制链接]
4410|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rospiers|  楼主 | 2017-12-26 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

timecount=RTC_GetCounter();
请问高手,这个函数是不是取出从1970年到现在的秒钟数?谢谢!
沙发
Lewisnx| | 2017-12-26 11:13 | 只看该作者
RTC只负责秒计数,具体的时间点是由获取时间年月日点分秒的算式决定的。

使用特权

评论回复
板凳
CCompton| | 2017-12-26 11:24 | 只看该作者
TimePtr->Year = (4U * (Days / ((4U * 365U) + 1U))) + 2000U; /* Year */
2000就是2000年

使用特权

评论回复
地板
Richardd| | 2017-12-26 11:37 | 只看该作者
RTC_GetCounter()这个函数什么功能

使用特权

评论回复
5
mmuuss586| | 2017-12-26 11:41 | 只看该作者
获取计数值;
具体时间还需要软件计算的;

使用特权

评论回复
6
Mattheww| | 2017-12-26 11:48 | 只看该作者
返回计数值
/**
  * @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
Erichk| | 2017-12-26 12:02 | 只看该作者
返回的计数值是不是从1970年1月1日0时0分0秒到现在的秒钟计数值?
这么理解对吗

使用特权

评论回复
8
Thorald| | 2017-12-26 16:08 | 只看该作者
除了这个函数你还需要日历时间函数,相对时间点是日历时间函数的常量

使用特权

评论回复
9
Bjorn| | 2017-12-26 16:34 | 只看该作者
是不是说这个函数,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
Rollo| | 2017-12-26 16:44 | 只看该作者
RTC1_GetTime 和RTC1_SetTime是一对,set是多少get就是多少,相对的
你把RTC1_GetTime 和RTC1_SetTime 里的2000 全部替换成1970,相对时间点就是1970年1月1日

使用特权

评论回复
11
玛尼玛尼哄| | 2017-12-26 17:41 | 只看该作者
软件做。

使用特权

评论回复
12
junpeng324| | 2017-12-26 20:38 | 只看该作者
对的,需要软件做

使用特权

评论回复
13
小明的同学| | 2017-12-26 21:13 | 只看该作者
RTCCount=RTC_GetCounter();//获得计数值并计算当前时钟/*Computehours*/

THH=RTCCount/3600;/*Computeminutes*/

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

TSS=(RTCCount%3600)%60;

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

使用特权

评论回复
14
小明的同学| | 2017-12-26 21:13 | 只看该作者
你用上面的方法,打印出时间后,看看是哪一年的就行了。

使用特权

评论回复
15
734774645| | 2017-12-27 11:25 | 只看该作者
从1970年到你设置那个时刻总共是多少秒。有些是这样的。不过这个年份你是可以设置的,因此不用纠结。

使用特权

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

本版积分规则

116

主题

377

帖子

0

粉丝