@@ -292,10 +292,14 @@ static void RTC_computePrediv(int8_t *asynch, int16_t *synch)
292
292
* @param format: enable the RTC in 12 or 24 hours mode
293
293
* @retval None
294
294
*/
295
- void RTC_init (hourFormat_t format , sourceClock_t source )
295
+ void RTC_init (hourFormat_t format , sourceClock_t source , bool reset )
296
296
{
297
297
initFormat = format ;
298
298
299
+ if (reset ) {
300
+ resetBackupRegister ();
301
+ }
302
+
299
303
/* Init RTC clock */
300
304
RTC_initClock (source );
301
305
@@ -323,19 +327,15 @@ void RTC_init(hourFormat_t format, sourceClock_t source)
323
327
324
328
HAL_RTC_Init (& RtcHandle );
325
329
326
- /*Sunday 1st January 2017*/
327
- RTC_SetDate (17 , 1 , 1 , 7 );
328
-
329
- /*at 0:0:0*/
330
- RTC_SetTime (0 , 0 , 0 , 0 , HOUR_AM );
331
-
332
330
#if !defined(STM32F1xx ) && !defined(STM32F2xx ) && !defined(STM32L1xx ) || defined(STM32L1_ULPH )
333
331
/* Enable Direct Read of the calendar registers (not through Shadow) */
334
332
HAL_RTCEx_EnableBypassShadow (& RtcHandle );
335
333
#endif /* !STM32F1xx && !STM32F2xx */
336
334
337
335
HAL_NVIC_SetPriority (RTC_Alarm_IRQn , 2 , 0 );
338
336
HAL_NVIC_EnableIRQ (RTC_Alarm_IRQn );
337
+ /* Ensure backup domain is enabled */
338
+ enableBackupRegister ();
339
339
}
340
340
341
341
/**
@@ -349,6 +349,15 @@ void RTC_DeInit(void)
349
349
callbackUserData = NULL ;
350
350
}
351
351
352
+ /**
353
+ * @brief Check wether time is already set
354
+ * @retval True if set else false
355
+ */
356
+ bool RTC_IsTimeSet (void )
357
+ {
358
+ return (getBackupRegister (RTC_BKP_INDEX ) == RTC_BKP_VALUE ) ? true : false;
359
+ }
360
+
352
361
/**
353
362
* @brief Set RTC time
354
363
* @param hours: 0-12 or 0-23. Depends on the format used.
@@ -392,6 +401,7 @@ void RTC_SetTime(uint8_t hours, uint8_t minutes, uint8_t seconds, uint32_t subSe
392
401
#endif /* !STM32F1xx */
393
402
394
403
HAL_RTC_SetTime (& RtcHandle , & RTC_TimeStruct , RTC_FORMAT_BIN );
404
+ setBackupRegister (RTC_BKP_INDEX , RTC_BKP_VALUE );
395
405
}
396
406
}
397
407
@@ -453,6 +463,7 @@ void RTC_SetDate(uint8_t year, uint8_t month, uint8_t day, uint8_t wday)
453
463
RTC_DateStruct .Date = day ;
454
464
RTC_DateStruct .WeekDay = wday ;
455
465
HAL_RTC_SetDate (& RtcHandle , & RTC_DateStruct , RTC_FORMAT_BIN );
466
+ setBackupRegister (RTC_BKP_INDEX , RTC_BKP_VALUE );
456
467
}
457
468
}
458
469
0 commit comments