[STM8] STM8L 读取RTC时间,误差惨不忍睹 求助

[复制链接]
11545|11
 楼主| dsoyy 发表于 2014-11-12 00:08 | 显示全部楼层 |阅读模式
硬件STM8L-DISCOVERY  --ST的学习板,换硬件也有这个问题

设置RTC,循环读取,通过仿真器和电脑时间比较,一分钟能差20S。原因一直没找到。

代码如下:
main()
{
   RTC_Config();
    while(1)
   {
     /* Wait until the calendar is synchronized */    while (RTC_WaitForSynchro() != SUCCESS);   
     RTC_GetDate(RTC_Format_BIN, &RTC_DateStr);
     RTC_GetTime(RTC_Format_BIN, &RTC_TimeStr);
   }
}


/***************************************************************************
下面为改版的RTC初始化部分
***************************************************************************/
void RTC_Config(void)
{

  /* Enable RTC clock */

  CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);

  /* Wait for LSE clock to be ready */

  while (CLK_GetFlagStatus(CLK_FLAG_LSERDY) == RESET);

  /* wait for 1 second for the LSE Stabilisation */

  //LSE_StabTime();
// delayms(3000);

  CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);



  RTC_InitStr.RTC_HourFormat = RTC_HourFormat_24;

  RTC_InitStr.RTC_AsynchPrediv = 0x7F;

  RTC_InitStr.RTC_SynchPrediv = 0x01FF;

  RTC_Init(&RTC_InitStr);



  /* Configures the RTC wakeup timer_step = RTCCLK/16 = LSE/16 = 488.28125 us */

  RTC_WakeUpClockConfig(RTC_WakeUpClock_CK_SPRE_16bits);
  /* Enable wake up unit Interrupt */

  RTC_ITConfig(RTC_IT_WUT, ENABLE);


  /* Enable general Interrupt*/

  enableInterrupts();

}

mmuuss586 发表于 2014-11-12 12:23 | 显示全部楼层

你具体是怎么比对的呢?
另外是不是每分钟的误差都是20S
21ID 发表于 2014-11-12 15:35 | 显示全部楼层
仿真的时间你是怎么计算的呢?
搞IT的 发表于 2014-11-12 23:42 | 显示全部楼层
仿真器的设置不对么、??
 楼主| dsoyy 发表于 2015-1-14 21:37 | 显示全部楼层
mmuuss586 发表于 2014-11-12 12:23
你具体是怎么比对的呢?
另外是不是每分钟的误差都是20S

一个半小时左右误差一秒,慢一秒
sting_yang 发表于 2015-1-15 00:26 | 显示全部楼层
标题惨不忍睹
 楼主| dsoyy 发表于 2015-4-6 15:40 | 显示全部楼层
忘记更新帖子了,问题找到了。
时间是是GPRS发送到服务器上记录的发送时刻的时间。

忽略了模块启动的时间,纠正后每次误差3.2S,恰好是模块启动用的时间,
感谢大家
小浣熊 发表于 2015-4-6 21:04 | 显示全部楼层
改版后想达到什么效果呢
huang_bc 发表于 2016-3-20 16:25 | 显示全部楼层
预分频改了吗?
这两句,修改数值
RTC_InitStr.RTC_AsynchPrediv = 0x7F;

  RTC_InitStr.RTC_SynchPrediv = 0x01FF;
调大变慢,调小变快
LguoFu 发表于 2016-6-3 14:00 | 显示全部楼层
dsoyy 发表于 2015-4-6 15:40
忘记更新帖子了,问题找到了。
时间是是GPRS发送到服务器上记录的发送时刻的时间。

也在做这个项目,请问时钟每天的误差是多少有测试吗?
aouwen 发表于 2017-3-10 14:54 | 显示全部楼层
楼主我想问问,rtc的时间怎么修改的我的误差也有点大。而且一直是第一次设定的时间,在那个时间一直计数下去,没找到原因。关机再开启还是那个时间计数过来的。就算我重新烧了程序,还是从那个时间一直读过来,就是第一次设定的时间到一直累加到现在。
desertsailor 发表于 2017-3-11 13:43 | 显示全部楼层
“每分钟差20秒”
您需要登录后才可以回帖 登录 | 注册

本版积分规则

144

主题

566

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部