Quiero usar el Calendario RTC interno con el Reloj interno (LSI).
Creo que por eso no funciona. Según el _AN4759 Uso del reloj en tiempo real por hardware (RTC) en modos de bajo consumo con microcontroladores STM32_ En la página 36/51 podemos leer la siguiente afirmación:
Utilizar el modo de reducción de potencia adecuado
En función de las restricciones de la aplicación, como el consumo de corriente máximo o medio, la frecuencia de los despertares o, alternativamente, el tiempo máximo de despertar, se pueden utilizar varios modos de bajo consumo. El periférico RTC puede estar activo en los siguientes modos de bajo consumo :
- Modo de reposo
- Modo de funcionamiento de bajo consumo
- Modo de reposo de bajo consumo
- Modo de parada si el reloj RTC es proporcionado por LSE o LSI(a)
- Modo de espera si el reloj RTC es proporcionado por LSE o LSI
- Modo de apagado si el reloj RTC es proporcionado por LSE(b)
Dado que está utilizando el LSI, el modo de menor consumo que se puede conseguir para su periférico RTC es el modo de espera. El modo de apagado se alcanza cuando apagas tu sistema (incluso si tienes VBAT conectado), que es tu caso.
El hecho de que VBAT esté conectado permite mantener el valor del RTC antes de apagar la fuente de alimentación principal, pero aquí, el hecho de que esté utilizando el LSI apaga el periférico RTC, por eso su valor no cambia.
Si quieres conseguir lo que quieres (que el RTC funcione incluso cuando la fuente de alimentación principal está apagada PERO con VBAT conectado), tienes que usar el LSE.