stm32f4discovery проблема с RTC
Добавлено: Пт июн 20, 2014 09:47:19
Привет, уважаемые форумчане!
Осваиваю stm32f4xx на основе платы stm32f4discovery. Возник затык с запуском RTC. Внешнего источника на плате нет (отсутствует часовой кварц), поэтому использую внутренний. Инициализирую так:
Далее периодически читаю время
но все время вижу день недели, день и месяц в 1, а остальное (секунды, минуты, часы и год) в 0. Т.е. RTC не считает. Похоже, что внутренний генератор не заводится, но почему понять не могу. Вроде при инициализации жду его готовности, и он выставляет флаг что готов. Собственные мысли уже кончились, подскажите кто может в чем может быть проблема. Заранее спасибо!
Осваиваю stm32f4xx на основе платы stm32f4discovery. Возник затык с запуском RTC. Внешнего источника на плате нет (отсутствует часовой кварц), поэтому использую внутренний. Инициализирую так:
Код: Выделить всё
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); // Allow access to RTC
PWR_BackupAccessCmd(ENABLE); // Select the RTC Clock Source
RCC_BackupResetCmd(ENABLE);
RCC_BackupResetCmd(DISABLE);
RCC_LSICmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET) ; // Wait till LSI is ready
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
RCC_RTCCLKCmd(ENABLE);
// Wait for RTC APB registers synchronisation
RTC_WaitForSynchro();
RTC_EnterInitMode();
RTC_StructInit(&rtc);
rtc.RTC_HourFormat = RTC_HourFormat_24;
rtc.RTC_AsynchPrediv = 0x7D - 1;
rtc.RTC_SynchPrediv = 0xFF - 1;
RTC_Init(&rtc);
WRITE_TIME_TO_RTC();
RTC_ExitInitMode();
PWR_BackupAccessCmd(DISABLE);Код: Выделить всё
RTC_GetTime(RTC_Format_BIN, &RtcTime);
RTC_GetDate(RTC_Format_BIN, &RtcDate);