RTC (reloj en tiempo real) en la serie STM32L4: la fecha y la hora no se están actualizando en la variable del depurador

0

Mientras se usa el RTC (reloj en tiempo real) en la serie STM32L4, pero la fecha y la hora no se están actualizando en la variable en el modo de depuración. Pero cuando detengo la depuración, la variable se actualiza instantáneamente y con el valor correcto.

¿Cuál es la explicación?

    
pregunta Nitish Arora

2 respuestas

1

Los depuradores son conocidos por no actualizar los registros, algunas soluciones incluyen:

Copie los registros a las variables e intente ver las variables temporales en el depurador. (Asegúrate de protegerlos de alguna manera para asegurarte de que el compilador no los optimice, si no se están utilizando y tienes activadas las optimizaciones, las variables temporales se optimizarán).

O use la 'consola' del depurador o un canal de comunicaciones equivalente con sentencias printf para imprimir el contenido de los registros.

    
respondido por el laptop2d
0

De forma predeterminada (RTC- > CR.BYPSHAD = 0), accede a RTC- > TR / RTC- > DR a través de los registros de sombra. La razón detrás es que puedes leer los datos de tiempo de manera consistente. Si no hubiera sombra y si comenzara a leer el registro de tiempo a las 23: 59: 59.9999 y luego a leer el registro de fecha, su lectura tendría 24 horas de anticipación. Para evitar esto, los registros sombra entran en juego. Después de leer el registro de tiempo, el registro de fecha se congela hasta que se lee también. El inconveniente es que debe esperar el "fin de la copia" (se debe establecer el bit RTC- > ISR.RSF). (Consulte RM0351, sección 34.3.8 Lectura del calendario)

Esto se hace en el código de producción, pero el depurador no espera hasta que se actualicen los registros en la sombra. Si desea verificar el tiempo durante la depuración, debe actualizar el registro RTC manualmente.

    
respondido por el hermannk

Lea otras preguntas en las etiquetas