¿La biblioteca STMicro para configurar la alarma RTC el domingo es incorrecta?

2

Estoy usando un stm32fxx ARM Cortex-M3. Al configurar una alarma RTC para el domingo, me di cuenta de que el archivo de encabezado stm32l1xx_rtc.h definía el domingo como:

#define RTC_Weekday_Sunday             ((uint8_t)0x07)

En el código, hago esto:

rtc_alarm.RTC_AlarmDateWeekDay      = RTC_Weekday_Sunday;

Pero no se dispara ninguna alarma cuando use este valor. En su lugar, intenté ingresar 0x0 cuando quiero programar una alarma el domingo, ¡entonces eso parece funcionar bien! Así que aquí está mi hipótesis:

  1. He usado el archivo de encabezado incorrecto para la serie F
  2. ¿Tengo que hacer una operación mod 7 al configurar el día de la semana? No encontré nada en una especificación que mencionó esto.
  3. El archivo de cabecera STMicro tiene un error

¿Si alguien con conocimientos me puede ayudar a entender este problema?

    
pregunta tll

2 respuestas

1

Es una situación común en la que el Día de la semana se representa como un valor de 1 - > 7. También puede encontrar situaciones en las que el DOW está representado por los números 0 - > 6.

También he visto situaciones en las que a veces el domingo se considera el primer día de la semana con el número DOW más bajo y otras donde el domingo se considera el último día de la semana con el número DOW con el número más alto.

Debe hacer lo que sea necesario para adaptar su entorno de aplicación al sistema numérico DOW utilizado en su chip RTC. Si eso requiere un poco de codificación de software por tu parte, entonces eso se convierte en parte del trabajo.

Por lo tanto, recomendaría que es mejor hacer un seguimiento de lo que funciona en lugar de tratar de averiguar qué puede estar o no mal con el código de la biblioteca del conjunto de chips.

    
respondido por el Michael Karas
0

Finalmente resolví este misterio al darme cuenta de que al configurar la Fecha de RTC, mientras que he proporcionado el valor de DayOfMonth, también debo proporcionar el valor de DayOfWeek al registro también en lugar de dejarlo en blanco. Tenía la impresión de que el módulo RTC puede calcular el DayOfWeek a partir de una fecha determinada (con Year / Month / DayOfMonth), pero ese no fue el caso.

    
respondido por el tll

Lea otras preguntas en las etiquetas