Всем привет,
Следующая проблема, запустил RTC от HSI, вычитываю в цикле раз в секунду значение времени (вывожу в консоль) и получаю повторяющееся значение часов\минут\секунд (регистр RTC_TR), регистр TR меняет значение через произвольное время от 5 сек до 6 мин.
ПРИЧЕМ! сам RTC тикает, тоесть как только значение читается корректно оно соответствует источнику синхронизации.
НО, использую IAR, унего есть мемори окно с апдейпом регистров раз в секунду, если включить этот апдейт, значения вычитываются корректно и при этом в прошиве они также начинают корректно вычитыватся (в консоли).
И, регистр SubSeconds читается всегда корректно!

Код
RTC: 2013/03/20 08:49:06.994
RTC: 2013/03/20 08:49:06.982
RTC: 2013/03/20 08:49:06.015
RTC: 2013/03/20 08:49:06.994
RTC: 2013/03/20 08:49:10.993
RTC: 2013/03/20 08:49:10.900


От LSI аналогично только тикает не стабильно.
Оптимизация отключена.
Проц работает от 1.8В, 84Mhz, APB1 шина на 42MHz.
Либы от куба.


Наступал кто на подобные грабли?

UPD: Парни, локализовал проблему. Проблема с либами Cude, на старых добрых StdPeriph_Driver все работает. интересный глюк, после исследование отпишу о деталях.
P.S. Не спешите использовать куб!!! Сырой он еще))) Это не первый баг, и не первый потраченный день на поиск бага).

UPD2: В общем проблема была в использовании регистра SSR(SubSeconds), после его чтения залачиваются регистры календаря до тех пор пока не будет произведено чтение регистра DR (Date). Тo есть если в старых добрых StdPeriph_Driver для чтения SubSeconds использовалась отдельная функция(RTC_GetSubSecond) то здесь они ее объединили с HAL_RTC_GetTime поэтому после использования HAL_RTC_GetTime вызываем HAL_RTC_GetDate даже если в этом нет необходимости.
Так кстати, английский по белому написано в примечании к использованию функции:

Код
  * @note   Call HAL_RTC_GetDate() after HAL_RTC_GetTime() to unlock the values
  *         in the higher-order calendar shadow registers.