Перейти к содержанию
    

Проблемы с RTC в stm32f*

процессор stm32f401. проинициализировал RTC. Работают. Вычитываю дату. При первой вычитке всё вычиталось нормально. дата 07.02.2017. часы перешли через 23:59:59, сутки увеличились.

читаю дату, получаю 07.02.2017. читаю регистр RTC_DT в переменную, в переменной 0x00172207 (7-е число), останавливаюсь в дебаге после вычитки ДТ в переменную, в переменной 07, смотрю регистры часов - в ДТ 0x00172208, см рис, вотчвиндоу, из разных мест программы в массив вычитал регистр RTC_DT и сразуже остановился. тот же вотчвиндоу показывает что в регистре RTC_DT дата 08. вобщем часы идут... идут... сутки, двое трое.... при попытке вычитать дату - дата стоит мертвая, как при первом чтении.

 

вычитываю кодом

tmpreg[1] = *(uint32_t*)0x40002804;

или

tmpreg[1] = (uint32_t)(RTC->DR & ((uint32_t)0x00FFFF3F) );

результат одинаковый

 

такое чувство, что этот регистр кэшируется где-то, при первой вычитке прочитывается нормально, а потом из кеша старое значение берётся. Оптимизация отключена. компилятор IAR.... что может быть?

post-49045-1486633723_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуй в регистре RTC_CR поставить бит BYPSHAD = 1.
Да, то что надо, в инит добавил

RTC_BypassShadowCmd(ENABLE);

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...