硬件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();
}
|