19 #if defined(USE_FULL_LL_DRIVER) 24 #ifdef USE_FULL_ASSERT 25 #include "stm32_assert.h" 27 #define assert_param(expr) ((void)0U) 47 #define RTC_ASYNCH_PRESC_DEFAULT 0x0000007FU 48 #define RTC_SYNCH_PRESC_DEFAULT 0x000000FFU 51 #define RTC_INITMODE_TIMEOUT 1000U 52 #define RTC_SYNCHRO_TIMEOUT 1000U 62 #define IS_LL_RTC_HOURFORMAT(__VALUE__) (((__VALUE__) == LL_RTC_HOURFORMAT_24HOUR) \ 63 || ((__VALUE__) == LL_RTC_HOURFORMAT_AMPM)) 65 #define IS_LL_RTC_ASYNCH_PREDIV(__VALUE__) ((__VALUE__) <= 0x7FU) 67 #define IS_LL_RTC_SYNCH_PREDIV(__VALUE__) ((__VALUE__) <= 0x7FFFU) 69 #define IS_LL_RTC_FORMAT(__VALUE__) (((__VALUE__) == LL_RTC_FORMAT_BIN) \ 70 || ((__VALUE__) == LL_RTC_FORMAT_BCD)) 72 #define IS_LL_RTC_TIME_FORMAT(__VALUE__) (((__VALUE__) == LL_RTC_TIME_FORMAT_AM_OR_24) \ 73 || ((__VALUE__) == LL_RTC_TIME_FORMAT_PM)) 75 #define IS_LL_RTC_HOUR12(__HOUR__) (((__HOUR__) > 0U) && ((__HOUR__) <= 12U)) 76 #define IS_LL_RTC_HOUR24(__HOUR__) ((__HOUR__) <= 23U) 77 #define IS_LL_RTC_MINUTES(__MINUTES__) ((__MINUTES__) <= 59U) 78 #define IS_LL_RTC_SECONDS(__SECONDS__) ((__SECONDS__) <= 59U) 80 #define IS_LL_RTC_WEEKDAY(__VALUE__) (((__VALUE__) == LL_RTC_WEEKDAY_MONDAY) \ 81 || ((__VALUE__) == LL_RTC_WEEKDAY_TUESDAY) \ 82 || ((__VALUE__) == LL_RTC_WEEKDAY_WEDNESDAY) \ 83 || ((__VALUE__) == LL_RTC_WEEKDAY_THURSDAY) \ 84 || ((__VALUE__) == LL_RTC_WEEKDAY_FRIDAY) \ 85 || ((__VALUE__) == LL_RTC_WEEKDAY_SATURDAY) \ 86 || ((__VALUE__) == LL_RTC_WEEKDAY_SUNDAY)) 88 #define IS_LL_RTC_DAY(__DAY__) (((__DAY__) >= 1U) && ((__DAY__) <= 31U)) 90 #define IS_LL_RTC_MONTH(__MONTH__) (((__MONTH__) >= 1U) && ((__MONTH__) <= 12U)) 92 #define IS_LL_RTC_YEAR(__YEAR__) ((__YEAR__) <= 99U) 94 #define IS_LL_RTC_ALMA_MASK(__VALUE__) (((__VALUE__) == LL_RTC_ALMA_MASK_NONE) \ 95 || ((__VALUE__) == LL_RTC_ALMA_MASK_DATEWEEKDAY) \ 96 || ((__VALUE__) == LL_RTC_ALMA_MASK_HOURS) \ 97 || ((__VALUE__) == LL_RTC_ALMA_MASK_MINUTES) \ 98 || ((__VALUE__) == LL_RTC_ALMA_MASK_SECONDS) \ 99 || ((__VALUE__) == LL_RTC_ALMA_MASK_ALL)) 101 #define IS_LL_RTC_ALMB_MASK(__VALUE__) (((__VALUE__) == LL_RTC_ALMB_MASK_NONE) \ 102 || ((__VALUE__) == LL_RTC_ALMB_MASK_DATEWEEKDAY) \ 103 || ((__VALUE__) == LL_RTC_ALMB_MASK_HOURS) \ 104 || ((__VALUE__) == LL_RTC_ALMB_MASK_MINUTES) \ 105 || ((__VALUE__) == LL_RTC_ALMB_MASK_SECONDS) \ 106 || ((__VALUE__) == LL_RTC_ALMB_MASK_ALL)) 109 #define IS_LL_RTC_ALMA_DATE_WEEKDAY_SEL(__SEL__) (((__SEL__) == LL_RTC_ALMA_DATEWEEKDAYSEL_DATE) || \ 110 ((__SEL__) == LL_RTC_ALMA_DATEWEEKDAYSEL_WEEKDAY)) 112 #define IS_LL_RTC_ALMB_DATE_WEEKDAY_SEL(__SEL__) (((__SEL__) == LL_RTC_ALMB_DATEWEEKDAYSEL_DATE) || \ 113 ((__SEL__) == LL_RTC_ALMB_DATEWEEKDAYSEL_WEEKDAY)) 140 ErrorStatus status = ERROR;
152 LL_RTC_WriteReg(RTCx, TR, 0x00000000U);
154 LL_RTC_WriteReg(RTCx,
WUTR, RTC_WUTR_WUT);
155 LL_RTC_WriteReg(RTCx, DR, (RTC_DR_WDU_0 | RTC_DR_MU_0 | RTC_DR_DU_0));
157 LL_RTC_WriteReg(RTCx, CR, (LL_RTC_ReadReg(RTCx, CR) & RTC_CR_WUCKSEL));
159 LL_RTC_WriteReg(RTCx, PRER, (RTC_PRER_PREDIV_A | RTC_SYNCH_PRESC_DEFAULT));
160 LL_RTC_WriteReg(RTCx, ALRMAR, 0x00000000U);
161 LL_RTC_WriteReg(RTCx, ALRMBR, 0x00000000U);
162 LL_RTC_WriteReg(RTCx, SHIFTR, 0x00000000U);
163 LL_RTC_WriteReg(RTCx, CALR, 0x00000000U);
164 LL_RTC_WriteReg(RTCx, ALRMASSR, 0x00000000U);
165 LL_RTC_WriteReg(RTCx, ALRMBSSR, 0x00000000U);
167 #if defined(STM32L412xx) || defined(STM32L422xx) 170 LL_RTC_WriteReg(RTCx, ISR, 0x00000000U);
173 LL_RTC_WriteReg(RTCx, TAMPCR, 0x00000000U);
176 LL_RTC_WriteReg(RTCx, OR, 0x00000000U);
203 ErrorStatus status = ERROR;
243 RTC_InitStruct->
HourFormat = LL_RTC_HOURFORMAT_24HOUR;
262 ErrorStatus status = ERROR;
268 if (RTC_Format == LL_RTC_FORMAT_BIN)
306 if (RTC_Format != LL_RTC_FORMAT_BIN)
314 __LL_RTC_CONVERT_BIN2BCD(RTC_TimeStruct->
Minutes),
315 __LL_RTC_CONVERT_BIN2BCD(RTC_TimeStruct->
Seconds));
345 RTC_TimeStruct->
TimeFormat = LL_RTC_TIME_FORMAT_AM_OR_24;
346 RTC_TimeStruct->
Hours = 0U;
365 ErrorStatus status = ERROR;
371 if ((RTC_Format == LL_RTC_FORMAT_BIN) && ((RTC_DateStruct->
Month & 0x10U) == 0x10U))
373 RTC_DateStruct->
Month = (uint8_t)((RTC_DateStruct->
Month & (uint8_t)~(0x10U)) + 0x0AU);
376 if (RTC_Format == LL_RTC_FORMAT_BIN)
384 assert_param(IS_LL_RTC_YEAR(__LL_RTC_CONVERT_BCD2BIN(RTC_DateStruct->
Year)));
386 assert_param(IS_LL_RTC_DAY(__LL_RTC_CONVERT_BCD2BIN(RTC_DateStruct->
Day)));
397 if (RTC_Format != LL_RTC_FORMAT_BIN)
404 __LL_RTC_CONVERT_BIN2BCD(RTC_DateStruct->
Month), __LL_RTC_CONVERT_BIN2BCD(RTC_DateStruct->
Year));
434 RTC_DateStruct->
WeekDay = LL_RTC_WEEKDAY_MONDAY;
435 RTC_DateStruct->
Day = 1U;
436 RTC_DateStruct->
Month = LL_RTC_MONTH_JANUARY;
437 RTC_DateStruct->
Year = 0U;
462 if (RTC_Format == LL_RTC_FORMAT_BIN)
520 if (RTC_Format != LL_RTC_FORMAT_BIN)
537 if (RTC_Format != LL_RTC_FORMAT_BIN)
580 if (RTC_Format == LL_RTC_FORMAT_BIN)
638 if (RTC_Format != LL_RTC_FORMAT_BIN)
655 if (RTC_Format != LL_RTC_FORMAT_BIN)
695 RTC_AlarmStruct->
AlarmMask = LL_RTC_ALMA_MASK_NONE;
717 RTC_AlarmStruct->
AlarmMask = LL_RTC_ALMB_MASK_NONE;
731 __IO uint32_t timeout = RTC_INITMODE_TIMEOUT;
732 ErrorStatus status = SUCCESS;
746 while ((timeout != 0U) && (tmp != 1U))
802 __IO uint32_t timeout = RTC_SYNCHRO_TIMEOUT;
803 ErrorStatus status = SUCCESS;
814 while ((timeout != 0U) && (tmp != 0U))
829 timeout = RTC_SYNCHRO_TIMEOUT;
831 while ((timeout != 0U) && (tmp != 1U))
__STATIC_INLINE void LL_RTC_ALMA_ConfigTime(RTC_TypeDef *RTCx, uint32_t Format12_24, uint32_t Hours, uint32_t Minutes, uint32_t Seconds)
Set Alarm A Time (hour, minute and second) in BCD format RTC_ALRMAR PM LL_RTC_ALMA_ConfigTime RTC_A...
Header file of RTC LL module.
__STATIC_INLINE void LL_RTC_ALMA_EnableWeekday(RTC_TypeDef *RTCx)
Enable AlarmA Week day selection (DU[3:0] represents the week day. DT[1:0] is do not care) RTC_ALRMA...
ErrorStatus LL_RTC_WaitForSynchro(RTC_TypeDef *RTCx)
Waits until the RTC Time and Day registers (RTC_TR and RTC_DR) are synchronized with RTC APB clock...
__STATIC_INLINE uint32_t LL_RTC_IsShadowRegBypassEnabled(RTC_TypeDef *RTCx)
Check if Shadow registers bypass is enabled or not. RTC_CR BYPSHAD LL_RTC_IsShadowRegBypassEnabled.
__STATIC_INLINE void LL_RTC_ALMB_ConfigTime(RTC_TypeDef *RTCx, uint32_t Format12_24, uint32_t Hours, uint32_t Minutes, uint32_t Seconds)
Set Alarm B Time (hour, minute and second) in BCD format RTC_ALRMBR PM LL_RTC_ALMB_ConfigTime RTC_A...
__STATIC_INLINE void LL_RTC_DATE_Config(RTC_TypeDef *RTCx, uint32_t WeekDay, uint32_t Day, uint32_t Month, uint32_t Year)
Set date (WeekDay, Day, Month and Year) in BCD format RTC_DR WDU LL_RTC_DATE_Config RTC_DR MT LL_RT...
ErrorStatus LL_RTC_TIME_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_TimeTypeDef *RTC_TimeStruct)
Set the RTC current time.
RTC Date structure definition.
ErrorStatus LL_RTC_ExitInitMode(RTC_TypeDef *RTCx)
Exit the RTC Initialization mode.
void LL_RTC_StructInit(LL_RTC_InitTypeDef *RTC_InitStruct)
Set each LL_RTC_InitTypeDef field to default value.
ErrorStatus LL_RTC_DATE_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_DateTypeDef *RTC_DateStruct)
Set the RTC current date.
__STATIC_INLINE void LL_RTC_DisableInitMode(RTC_TypeDef *RTCx)
Disable initialization mode (Free running mode) RTC_ICSR INIT LL_RTC_DisableInitMode.
__STATIC_INLINE void LL_RTC_ALMA_DisableWeekday(RTC_TypeDef *RTCx)
Disable AlarmA Week day selection (DU[3:0] represents the date ) RTC_ALRMAR WDSEL LL_RTC_ALMA_Disabl...
__STATIC_INLINE void LL_RTC_ALMB_EnableWeekday(RTC_TypeDef *RTCx)
Enable AlarmB Week day selection (DU[3:0] represents the week day. DT[1:0] is do not care) RTC_ALRMB...
__STATIC_INLINE void LL_RTC_ClearFlag_RS(RTC_TypeDef *RTCx)
Clear Registers synchronization flag RTC_ICSR RSF LL_RTC_ClearFlag_RS.
__STATIC_INLINE void LL_RTC_SetHourFormat(RTC_TypeDef *RTCx, uint32_t HourFormat)
Set Hours format (24 hour/day or AM/PM hour format)
__STATIC_INLINE void LL_RTC_EnableWriteProtection(RTC_TypeDef *RTCx)
Enable the write protection for RTC registers. RTC_WPR KEY LL_RTC_EnableWriteProtection.
__STATIC_INLINE void LL_RTC_SetAsynchPrescaler(RTC_TypeDef *RTCx, uint32_t AsynchPrescaler)
Set Asynchronous prescaler factor RTC_PRER PREDIV_A LL_RTC_SetAsynchPrescaler.
ErrorStatus LL_RTC_DeInit(RTC_TypeDef *RTCx)
De-Initializes the RTC registers to their default reset values.
__STATIC_INLINE void LL_RTC_DisableWriteProtection(RTC_TypeDef *RTCx)
Disable the write protection for RTC registers. RTC_WPR KEY LL_RTC_DisableWriteProtection.
void LL_RTC_ALMB_StructInit(LL_RTC_AlarmTypeDef *RTC_AlarmStruct)
Set each LL_RTC_AlarmTypeDef of ALARMA field to default value (Time = 00h:00mn:00sec / Day = 1st day ...
__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RS(RTC_TypeDef *RTCx)
Get Registers synchronization flag RTC_ICSR RSF LL_RTC_IsActiveFlag_RS.
__STATIC_INLINE void LL_RTC_EnableInitMode(RTC_TypeDef *RTCx)
Enable initialization mode.
__STATIC_INLINE void LL_RTC_ALMB_DisableWeekday(RTC_TypeDef *RTCx)
Disable AlarmB Week day selection (DU[3:0] represents the date ) RTC_ALRMBR WDSEL LL_RTC_ALMB_Disabl...
RTC Time structure definition.
void LL_RTC_ALMA_StructInit(LL_RTC_AlarmTypeDef *RTC_AlarmStruct)
Set each LL_RTC_AlarmTypeDef of ALARMA field to default value (Time = 00h:00mn:00sec / Day = 1st day ...
RTC Init structures definition.
void LL_RTC_DATE_StructInit(LL_RTC_DateTypeDef *RTC_DateStruct)
Set each LL_RTC_DateTypeDef field to default value (date = Monday, January 01 xx00) ...
ErrorStatus LL_RTC_ALMB_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_AlarmTypeDef *RTC_AlarmStruct)
Set the RTC Alarm B.
__STATIC_INLINE uint32_t LL_RTC_GetHourFormat(RTC_TypeDef *RTCx)
Get Hours format (24 hour/day or AM/PM hour format) RTC_CR FMT LL_RTC_GetHourFormat.
LL_RTC_TimeTypeDef AlarmTime
uint32_t AlarmDateWeekDaySel
__STATIC_INLINE void LL_RTC_ALMA_SetMask(RTC_TypeDef *RTCx, uint32_t Mask)
Specify the Alarm A masks. RTC_ALRMAR MSK4 LL_RTC_ALMA_SetMask RTC_ALRMAR MSK3 LL_RTC_ALMA_SetMask ...
__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_INIT(RTC_TypeDef *RTCx)
Get Initialization flag RTC_ICSR INITF LL_RTC_IsActiveFlag_INIT.
__STATIC_INLINE void LL_RTC_TIME_Config(RTC_TypeDef *RTCx, uint32_t Format12_24, uint32_t Hours, uint32_t Minutes, uint32_t Seconds)
Set time (hour, minute and second) in BCD format.
Header file of CORTEX LL module.
RTC Alarm structure definition.
__STATIC_INLINE uint32_t LL_SYSTICK_IsActiveCounterFlag(void)
This function checks if the Systick counter flag is active or not.
ErrorStatus LL_RTC_Init(RTC_TypeDef *RTCx, LL_RTC_InitTypeDef *RTC_InitStruct)
Initializes the RTC registers according to the specified parameters in RTC_InitStruct.
__STATIC_INLINE void LL_RTC_ALMB_SetDay(RTC_TypeDef *RTCx, uint32_t Day)
Set ALARM B Day in BCD format.
__STATIC_INLINE void LL_RTC_ALMA_SetWeekDay(RTC_TypeDef *RTCx, uint32_t WeekDay)
Set ALARM A Weekday RTC_ALRMAR DU LL_RTC_ALMA_SetWeekDay.
void LL_RTC_TIME_StructInit(LL_RTC_TimeTypeDef *RTC_TimeStruct)
Set each LL_RTC_TimeTypeDef field to default value (Time = 00h:00min:00sec).
ErrorStatus LL_RTC_ALMA_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_AlarmTypeDef *RTC_AlarmStruct)
Set the RTC Alarm A.
__STATIC_INLINE void LL_RTC_SetSynchPrescaler(RTC_TypeDef *RTCx, uint32_t SynchPrescaler)
Set Synchronous prescaler factor RTC_PRER PREDIV_S LL_RTC_SetSynchPrescaler.
__STATIC_INLINE void LL_RTC_ALMB_SetWeekDay(RTC_TypeDef *RTCx, uint32_t WeekDay)
Set ALARM B Weekday RTC_ALRMBR DU LL_RTC_ALMB_SetWeekDay.
__STATIC_INLINE void LL_RTC_ALMA_SetDay(RTC_TypeDef *RTCx, uint32_t Day)
Set ALARM A Day in BCD format.
__STATIC_INLINE void LL_RTC_ALMB_SetMask(RTC_TypeDef *RTCx, uint32_t Mask)
Specify the Alarm B masks. RTC_ALRMBR MSK4 LL_RTC_ALMB_SetMask RTC_ALRMBR MSK3 LL_RTC_ALMB_SetMask ...
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
ErrorStatus LL_RTC_EnterInitMode(RTC_TypeDef *RTCx)
Enters the RTC Initialization mode.