CODE
void RTC_Config(void) {
u16 WaitForOscSource;
if (BKP_ReadBackupRegister(BKP_DR1) != CONF_DONE)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
RCC_LSEConfig(RCC_LSE_ON);
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
{}
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
RTC_WaitForLastTask();
RTC_SetPrescaler(32767);
RTC_WaitForLastTask();
DateVar.Month = DEFAULT_MOUNT;
DateVar.Day = DEFAULT_DAY;
DateVar.Year = DEFAULT_YEAR;
TimeVar.Sec = DEFAULT_SEC;
TimeVar.Min = DEFAULT_MIN;
TimeVar.Hour = DEFAULT_HOUR;
SummerTimeCorrect =OCTOBER_FLAG_SET;
BKP_WriteBackupRegister(BKP_DR1,CONF_DONE);
RTC_DataWrite();
}
else
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
RTC_WaitForSynchro();
RTC_WaitForLastTask();
}
}
Сообщение отредактировал IgorKossak - Oct 13 2011, 14:12
Причина редактирования: [codebox]