В новом RTC у тех STM-ок, что поновее (вроде бы у всех, кроме F1) есть специальный регистр для этого - SSR.
Также есть два предделителя: синхронный и асинхронный.
Делаю такую инициализацию:
Код
static constexpr unsigned quartzFreqHz = 32768; // частота кварца
static constexpr unsigned asyncPrediv = 0x1F; // асинхронный предделитель
static constexpr unsigned syncPrediv = quartzFreqHz / (asyncPrediv + 1) - 1; // синхронный предделитель
.....
RTC->PRER = syncPrediv;
RTC->PRER |= asyncPrediv << 16;
static constexpr unsigned asyncPrediv = 0x1F; // асинхронный предделитель
static constexpr unsigned syncPrediv = quartzFreqHz / (asyncPrediv + 1) - 1; // синхронный предделитель
.....
RTC->PRER = syncPrediv;
RTC->PRER |= asyncPrediv << 16;
После этого я ожидаю, что в регистре SSR будут значения от 0 до 32768/(asyncPrediv+1) = 1024. Однако, запустив цикл вывода значений SSR на печать, я наблюдаю там числа от 0 до 1055(!). Возможно и более, я не очень долго смотрел.
Внимание, вопрос: почему так? Что я сделал не так? Кто-нибудь сталкивался с таким?