Как уже было замечено ранее, всё дело в последовательности. Там вы работаете не напрямую с физическими регистрами, а с теневыми. Сейчас уже точно не помню, но вроде реальные данные, переписываются из теневых регистров только после записи секунд в них. С чтением проблем вроде не было. Но и там то же читать надо 2 раза, что бы не напороться на секундный переход. Причем при использовании библиотек, убедитесь, что там верная последовательность (ошибок в библиотеках хватает).
Читаем в такой последовательности:
Код
RTC_GetTime(RTC_Format_BCD, &RTC_TimeStructure); // Get the current Time
RTC_GetDate(RTC_Format_BCD, &RTC_DateStructure); // Get the current Date
Пишем в такой:
Код
PWR_BackupAccessCmd(ENABLE); // BKP ENABLE
RTC_SetDate(RTC_Format_BCD, &RTC_DateStructure); // Init Date
RTC_SetTime(RTC_Format_BCD, &RTC_TimeStructure); // Init Time
PWR_BackupAccessCmd(DISABLE); // BKP DISABLE
Или я не уловил суть вопроса?