@@ -285,10 +285,14 @@ static void RTC_computePrediv(int8_t *asynch, int16_t *synch)
285
285
* @param format: enable the RTC in 12 or 24 hours mode
286
286
* @retval None
287
287
*/
288
- void RTC_init (hourFormat_t format , sourceClock_t source )
288
+ void RTC_init (hourFormat_t format , sourceClock_t source , bool reset )
289
289
{
290
290
initFormat = format ;
291
291
292
+ if (reset ) {
293
+ resetBackupRegister ();
294
+ }
295
+
292
296
/* Init RTC clock */
293
297
RTC_initClock (source );
294
298
@@ -316,19 +320,15 @@ void RTC_init(hourFormat_t format, sourceClock_t source)
316
320
317
321
HAL_RTC_Init (& RtcHandle );
318
322
319
- /*Sunday 1st January 2017*/
320
- RTC_SetDate (17 , 1 , 1 , 7 );
321
-
322
- /*at 0:0:0*/
323
- RTC_SetTime (0 , 0 , 0 , 0 , HOUR_AM );
324
-
325
323
#if !defined(STM32F1xx ) && !defined(STM32F2xx ) && !defined(STM32L1xx ) || defined(STM32L1_ULPH )
326
324
/* Enable Direct Read of the calendar registers (not through Shadow) */
327
325
HAL_RTCEx_EnableBypassShadow (& RtcHandle );
328
326
#endif /* !STM32F1xx && !STM32F2xx */
329
327
330
328
HAL_NVIC_SetPriority (RTC_Alarm_IRQn , 2 , 0 );
331
329
HAL_NVIC_EnableIRQ (RTC_Alarm_IRQn );
330
+ /* Ensure backup domain is enabled */
331
+ enableBackupRegister ();
332
332
}
333
333
334
334
/**
@@ -342,6 +342,15 @@ void RTC_DeInit(void)
342
342
callbackUserData = NULL ;
343
343
}
344
344
345
+ /**
346
+ * @brief Check wether time is already set
347
+ * @retval True if set else false
348
+ */
349
+ bool RTC_IsTimeSet (void )
350
+ {
351
+ return (getBackupRegister (RTC_BKP_INDEX ) == RTC_BKP_VALUE )? true : false;
352
+ }
353
+
345
354
/**
346
355
* @brief Set RTC time
347
356
* @param hours: 0-12 or 0-23. Depends on the format used.
@@ -385,6 +394,7 @@ void RTC_SetTime(uint8_t hours, uint8_t minutes, uint8_t seconds, uint32_t subSe
385
394
#endif /* !STM32F1xx */
386
395
387
396
HAL_RTC_SetTime (& RtcHandle , & RTC_TimeStruct , RTC_FORMAT_BIN );
397
+ setBackupRegister (RTC_BKP_INDEX , RTC_BKP_VALUE );
388
398
}
389
399
}
390
400
@@ -446,6 +456,7 @@ void RTC_SetDate(uint8_t year, uint8_t month, uint8_t day, uint8_t wday)
446
456
RTC_DateStruct .Date = day ;
447
457
RTC_DateStruct .WeekDay = wday ;
448
458
HAL_RTC_SetDate (& RtcHandle , & RTC_DateStruct , RTC_FORMAT_BIN );
459
+ setBackupRegister (RTC_BKP_INDEX , RTC_BKP_VALUE );
449
460
}
450
461
}
451
462
0 commit comments