44#ifndef G32R4XX_DDL_RTC_H
45#define G32R4XX_DDL_RTC_H
71#define RTC_INIT_MASK RTC_CSTS_CFGMFLG
72#define RTC_CSTS_INITEN RTC_CSTS_CFGMFLG
73#define RTC_RSF_MASK ((uint32_t)~(RTC_CSTS_INITEN | RTC_CSTS_RSYNCFLG))
80#if defined(USE_FULL_DDL_DRIVER)
90#if defined(USE_FULL_DDL_DRIVER)
141#if defined(USE_FULL_DDL_DRIVER)
148#define DDL_RTC_CALIB_OUTPUT_NONE 0x00000000U
156#define DDL_RTC_CLOCK_SOURCE_NONE (0x00000000UL)
157#define DDL_RTC_CLOCK_SOURCE_LSE (PMU_CR_RTCSEL_0)
158#define DDL_RTC_CLOCK_SOURCE_LSI (PMU_CR_RTCSEL_1)
159#define DDL_RTC_CLOCK_SOURCE_HSE_DIV_32 (PMU_CR_RTCSEL_1 | PMU_CR_RTCSEL_0)
184#define DDL_RTC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
192#define DDL_RTC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
217 MODIFY_REG(RTCx->PSCRLDH, RTC_PSCRLD_PSCRLDH, (Prescaler >> 16U));
218 MODIFY_REG(RTCx->PSCRLDL, RTC_PSCRLD_PSCRLDL, (Prescaler & 0xFFFFU));
228 return (uint32_t)((READ_BIT(RTCx->DIVH, RTC_DIVH_DIVH) << 16U) + READ_BIT(RTCx->DIVL, RTC_DIVL_DIVL));
242 MODIFY_REG(PMU->CR, PMU_CR_RTCSEL, Source);
256 return (uint32_t)(READ_BIT(PMU->CR, PMU_CR_RTCSEL));
291 SET_BIT(PMU->CR, PMU_CR_RTCEN);
301 CLEAR_BIT(PMU->CR, PMU_CR_RTCEN);
321 WRITE_REG(RTCx->CNTH, ((TimerCounter >> 16U) & 0xFFFFU));
322 WRITE_REG(RTCx->CNTL, (TimerCounter & 0xFFFFU));
335 cnt_high = READ_BIT(RTCx->CNTH, RTC_CNT_CNTH);
336 cnt_low = READ_BIT(RTCx->CNTL, RTC_CNT_CNTL);
338 return ((uint32_t)cnt_high << 16U) | (uint32_t)cnt_low;
357 MODIFY_REG(RTCx->ALRH, RTC_ALRH_ALRH, ((Time >> 16U) & 0xFFFFU));
358 MODIFY_REG(RTCx->ALRL, RTC_ALRL_ALRL, (Time & 0xFFFFU));
368 return (uint32_t)((READ_BIT(RTCx->ALRH, RTC_ALRH_ALRH) << 16U) + READ_BIT(RTCx->ALRL, RTC_ALRL_ALRL));
386 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_SECFLG) == (RTC_CSTS_SECFLG)) ? 1UL : 0UL);
396 CLEAR_BIT(RTCx->CSTS, RTC_CSTS_SECFLG);
406 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_ALRFLG) == (RTC_CSTS_ALRFLG)) ? 1UL : 0UL);
416 CLEAR_BIT(RTCx->CSTS, RTC_CSTS_ALRFLG);
426 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_OVRFLG) == (RTC_CSTS_OVRFLG)) ? 1UL : 0UL);
436 CLEAR_BIT(RTCx->CSTS, RTC_CSTS_OVRFLG);
446 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_RSYNCFLG) == (RTC_CSTS_RSYNCFLG)) ? 1UL : 0UL);
466 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_CFGMFLG) == (RTC_CSTS_CFGMFLG)) ? 1UL : 0UL);
476 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_OCFLG) == (RTC_CSTS_OCFLG)) ? 1UL : 0UL);
494 SET_BIT(RTCx->CTRL, RTC_CTRL_SECIEN);
504 CLEAR_BIT(RTCx->CTRL, RTC_CTRL_SECIEN);
514 return ((READ_BIT(RTCx->CTRL, RTC_CTRL_SECIEN) == (RTC_CTRL_SECIEN)) ? 1UL : 0UL);
524 SET_BIT(RTCx->CTRL, RTC_CTRL_ALRIEN);
534 CLEAR_BIT(RTCx->CTRL, RTC_CTRL_ALRIEN);
544 return ((READ_BIT(RTCx->CTRL, RTC_CTRL_ALRIEN) == (RTC_CTRL_ALRIEN)) ? 1UL : 0UL);
554 SET_BIT(RTCx->CTRL, RTC_CTRL_OVRIEN);
564 CLEAR_BIT(RTCx->CTRL, RTC_CTRL_OVRIEN);
574 return ((READ_BIT(RTCx->CTRL, RTC_CTRL_OVRIEN) == (RTC_CTRL_OVRIEN)) ? 1UL : 0UL);
581#if defined(USE_FULL_DDL_DRIVER)
__STATIC_INLINE void DDL_RTC_SetAlarm(RTC_TypeDef *RTCx, uint32_t Time)
Set ALARM time in Binary format.
__STATIC_INLINE uint32_t DDL_RTC_GetAlarm(RTC_TypeDef *RTCx)
Get ALARM time in Binary format.
__STATIC_INLINE void DDL_RTC_SetClkSource(uint32_t Source)
Set RTC clock source.
__STATIC_INLINE void DDL_RTC_DisableClk(void)
Disable RTC clock.
__STATIC_INLINE uint32_t DDL_RTC_GetClkSource(void)
Get RTC clock source.
__STATIC_INLINE void DDL_RTC_DisableInitMode(RTC_TypeDef *RTCx)
Disable initialization mode (Free running mode).
__STATIC_INLINE void DDL_RTC_EnableInitMode(RTC_TypeDef *RTCx)
Enable initialization mode.
__STATIC_INLINE void DDL_RTC_SetPrescaler(RTC_TypeDef *RTCx, uint32_t Prescaler)
Set prescaler factor.
__STATIC_INLINE uint32_t RTC_GetPrescalerRemainderValue(RTC_TypeDef *RTCx)
Get the prescaler remainder value.
__STATIC_INLINE void DDL_RTC_EnableClk(void)
Enable RTC clock.
__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_SEC(RTC_TypeDef *RTCx)
Get Second signal condition met flag.
__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_ALR(RTC_TypeDef *RTCx)
Get Alarm flag.
__STATIC_INLINE void DDL_RTC_ClearFlag_RS(RTC_TypeDef *RTCx)
Clear Registers synchronization flag.
__STATIC_INLINE void DDL_RTC_ClearFlag_OVR(RTC_TypeDef *RTCx)
Clear Overflow occur flag.
__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_RS(RTC_TypeDef *RTCx)
Get Registers synchronization flag.
__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_OCFLG(RTC_TypeDef *RTCx)
Get Alarm A write flag.
__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_OVR(RTC_TypeDef *RTCx)
Get Overflow occur flag.
__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_CFGM(RTC_TypeDef *RTCx)
Get Initialization status flag.
__STATIC_INLINE void DDL_RTC_ClearFlag_ALR(RTC_TypeDef *RTCx)
Clear Alarm flag.
__STATIC_INLINE void DDL_RTC_ClearFlag_SEC(RTC_TypeDef *RTCx)
Clear Second signal condition met flag.
__STATIC_INLINE void DDL_RTC_EnableIT_OVR(RTC_TypeDef *RTCx)
Enable Overflow interrupt.
__STATIC_INLINE void DDL_RTC_DisableIT_SEC(RTC_TypeDef *RTCx)
Disable Second interrupt.
__STATIC_INLINE uint32_t DDL_RTC_IsEnabledIT_OVR(RTC_TypeDef *RTCx)
Check if Overflow interrupt is enabled or not.
__STATIC_INLINE void DDL_RTC_DisableIT_OVR(RTC_TypeDef *RTCx)
Disable Overflow interrupt.
__STATIC_INLINE void DDL_RTC_EnableIT_ALR(RTC_TypeDef *RTCx)
Enable Alarm interrupt.
__STATIC_INLINE uint32_t DDL_RTC_IsEnabledIT_SEC(RTC_TypeDef *RTCx)
Check if Second interrupt is enabled or not.
__STATIC_INLINE void DDL_RTC_DisableIT_ALR(RTC_TypeDef *RTCx)
Disable Alarm interrupt.
__STATIC_INLINE void DDL_RTC_EnableIT_SEC(RTC_TypeDef *RTCx)
Enable Second interrupt.
__STATIC_INLINE uint32_t DDL_RTC_IsEnabledIT_ALR(RTC_TypeDef *RTCx)
Check if Alarm interrupt is enabled or not.
ErrorStatus DDL_RTC_DeInit(RTC_TypeDef *RTCx)
De-Initializes the RTC registers to their default reset values.
void DDL_RTC_ALM_StructInit(DDL_RTC_AlarmTypeDef *RTC_AlarmStruct)
Set each DDL_RTC_AlarmTypeDef of ALARM field to default value (Time = 00h:00mn:00sec).
ErrorStatus DDL_RTC_WaitForOperationComplete(RTC_TypeDef *RTCx)
Waits until the RTC operation is completed.
ErrorStatus DDL_RTC_Init(RTC_TypeDef *RTCx, DDL_RTC_InitTypeDef *RTC_InitStruct)
Initializes the RTC registers according to the specified parameters in RTC_InitStruct.
ErrorStatus DDL_RTC_TIME_Init(RTC_TypeDef *RTCx, DDL_RTC_TimeTypeDef *RTC_TimeStruct)
Set the RTC current time.
ErrorStatus DDL_RTC_EnterInitMode(RTC_TypeDef *RTCx)
Enters the RTC Initialization mode.
ErrorStatus DDL_RTC_ALM_Init(RTC_TypeDef *RTCx, DDL_RTC_AlarmTypeDef *RTC_AlarmStruct)
Set the RTC Alarm.
void DDL_RTC_StructInit(DDL_RTC_InitTypeDef *RTC_InitStruct)
Set each DDL_RTC_InitTypeDef field to default value.
void DDL_RTC_TIME_StructInit(DDL_RTC_TimeTypeDef *RTC_TimeStruct)
Set each DDL_RTC_TimeTypeDef field to default value (Time = 0sec).
ErrorStatus DDL_RTC_ExitInitMode(RTC_TypeDef *RTCx)
Exit the RTC Initialization mode.
ErrorStatus DDL_RTC_WaitForSynchro(RTC_TypeDef *RTCx)
Waits until the RTC registers (RTC_CNT, RTC_ALR, RTC_PSCRLD) are synchronized with RTC APB clock.
__STATIC_INLINE void DDL_RTC_SetTime(RTC_TypeDef *RTCx, uint32_t TimerCounter)
Set time in Binary format.
__STATIC_INLINE uint32_t DDL_RTC_GetTime(RTC_TypeDef *RTCx)
Get time (all converted to seconds) in Binary format.
RTC Alarm structure definition.
RTC Init structures definition.
RTC Time structure definition.