[求助] RTC_GetCounter()函数的功能问题

chenbingjy   2017-10-18 09:34 楼主
timecount=RTC_GetCounter();
请问高手,这个函数是不是取出从1970年到现在的秒钟数?谢谢!
为江山踏坏了乌骓马,为社稷拉断了宝雕弓。

回复评论 (10)

RTC只负责秒计数,具体的时间点是由获取时间年月日点分秒的算式决定的。
点赞  2017-10-18 12:59
引用: huo_hu 发表于 2017-10-18 12:59
RTC只负责秒计数,具体的时间点是由获取时间年月日点分秒的算式决定的。

你没有回答我的问题
为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
点赞  2017-10-18 13:39
引用: chenbingjy 发表于 2017-10-18 13:39
你没有回答我的问题

回答完了呀
点赞  2017-10-18 15:29
你可以看一下这个帖 https://bbs.eeworld.com.cn/forum. ... 5&page=1#pid2227410 TimePtr->Year = (4U * (Days / ((4U * 365U) + 1U))) + 2000U; /* Year */ 2000就是2000年 本帖最后由 huo_hu 于 2017-10-18 15:39 编辑
点赞  2017-10-18 15:35
引用: huo_hu 发表于 2017-10-18 15:35
你可以看一下这个帖
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=559385&page=1#pid2227410

我问这个函数的功能。RTC_GetCounter()
为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
点赞  2017-10-18 15:38
引用: chenbingjy 发表于 2017-10-18 15:38
我问这个函数的功能。RTC_GetCounter()

返回计数值
/**
  * @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);
  }
}
点赞  2017-10-18 15:42
引用: huo_hu 发表于 2017-10-18 15:42
返回计数值
/**
  * @brief  Gets the RTC counter value.
  * @param  None
  * @retval RTC counte ...

谢谢!那返回的计数值是不是从1970年1月1日0时0分0秒到现在的秒钟计数值?
为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
点赞  2017-10-18 15:56
引用: chenbingjy 发表于 2017-10-18 15:56
谢谢!那返回的计数值是不是从1970年1月1日0时0分0秒到现在的秒钟计数值?

这么说吧,你除了这个函数你还需要日历时间函数,相对时间点是日历时间函数的常量
点赞  2017-10-18 16:12
引用: huo_hu 发表于 2017-10-18 16:12
这么说吧,你除了这个函数你还需要日历时间函数,相对时间点是日历时间函数的常量

你是不是说这个函数,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分,秒可能走了几秒钟这之间的秒数?
为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
点赞  2017-10-18 16:21
引用: chenbingjy 发表于 2017-10-18 16:21 你是不是说这个函数,RTC_Set(2017,10,17,17,51,20); 比如我设置了日期时间,2017年10月17日17时51分20 ...
RTC1_GetTime 和RTC1_SetTime是一对,set是多少get就是多少,相对的 你把RTC1_GetTime 和RTC1_SetTime 里的2000 全部替换成1970,相对时间点就是1970年1月1日 本帖最后由 huo_hu 于 2017-10-18 16:35 编辑
点赞  2017-10-18 16:30
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复