Цитата(MiklPolikov @ Mar 1 2016, 00:59)

Так и делаю.
Но при частых перенастройках RTC он начинает жутко отставать, видимо во время процедуры входа в режим инициализации пропускается такт кварца или что-то в этом роде.
Прошерстил раздел о RTC. Ничего такого нет.
Тактирование часов не переключаете? Вроди бы, весь домен RTC может работать на LSI/LSE генераторе и зависеть только от его стабильности. Соответственно, на LSE может быть несколько завышенная ёмкость на кристалле, либо сам кристалл имеет заниженную частоту (хотя чаще спешат).
Плюс, у часов есть секундное прерывание - не эффективнее ли использовать его? Или нужны более длинные паузы?
Ещё есть таймер пробуждения (RTC_CR_WUTE), который можно настроить:
20.3.4 Periodic auto-wakeup
Код
The•
•
wakeup timer clock input can be:
RTC clock (RTCCLK) divided by 2, 4, 8, or 16.
When RTCCLK is LSE(32.768kHz), this allows to configure the wakeup interrupt period
from 122 μs to 32 s, with a resolution down to 61μs.
ck_spre (usually 1 Hz internal clock)
When ck_spre frequency is 1Hz, this allows to achieve a wakeup time from 1 s to
around 36 hours with one-second resolution. This large programmable time range is
divided in 2 parts:
–
from 1s to 18 hours when WUCKSEL [2:1] = 10
–
and from around 18h to 36h when WUCKSEL[2:1] = 11. In this last case 216 is
added to the 16-bit counter current value.When the initialization sequence is
complete (see Programming the wakeup timer on page 506), the timer starts
counting down.When the wakeup function is enabled, the down-counting remains
active in low power modes. In addition, when it reaches 0, the WUTF flag is set in
the RTC_ISR register, and the wakeup counter is automatically reloaded with its
reload value (RTC_WUTR register value).
То есть, достаточно широкие пределы возможностей автопробуждения. И приличной точностью.
Отпадает необходимость в дополнительных таймерах, которые будут будить контроллер из STOP'а. Кстати, должно сработать и в STANDBY, судя по таблице.