G32R430 Device Driver Layer v1.0.4
G32R4xx Device Driver Layer API Reference
g32r4xx_ddl_rtc.h
Go to the documentation of this file.
1
42
43/* Define to prevent recursive inclusion -------------------------------------*/
44#ifndef G32R4XX_DDL_RTC_H
45#define G32R4XX_DDL_RTC_H
46
47#ifdef __cplusplus
48extern "C" {
49#endif
50
51/* Includes ------------------------------------------------------------------*/
52#include "g32r4xx.h"
53
57
58#if defined(RTC)
59
63
64/* Private types -------------------------------------------------------------*/
65/* Private variables ---------------------------------------------------------*/
66/* Private constants ---------------------------------------------------------*/
70/* Masks Definition */
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))
74
78
79/* Private macros ------------------------------------------------------------*/
80#if defined(USE_FULL_DDL_DRIVER)
87#endif /*USE_FULL_DDL_DRIVER*/
88
89/* Exported types ------------------------------------------------------------*/
90#if defined(USE_FULL_DDL_DRIVER)
94
98typedef struct
99{
100 uint32_t Prescaler;
106
110typedef struct
111{
112 uint32_t TimerCounter;
118
122typedef struct
123{
124 uint32_t AlarmTime;
130
134#endif /* USE_FULL_DDL_DRIVER */
135
136/* Exported constants --------------------------------------------------------*/
140
141#if defined(USE_FULL_DDL_DRIVER)
142
143#endif /* USE_FULL_DDL_DRIVER */
144
148#define DDL_RTC_CALIB_OUTPUT_NONE 0x00000000U
152
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)
163
167
168/* Exported macro ------------------------------------------------------------*/
172
176
184#define DDL_RTC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
185
192#define DDL_RTC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
196
200
201/* Exported functions --------------------------------------------------------*/
205
215__STATIC_INLINE void DDL_RTC_SetPrescaler(RTC_TypeDef* RTCx, uint32_t Prescaler)
216{
217 MODIFY_REG(RTCx->PSCRLDH, RTC_PSCRLD_PSCRLDH, (Prescaler >> 16U));
218 MODIFY_REG(RTCx->PSCRLDL, RTC_PSCRLD_PSCRLDL, (Prescaler & 0xFFFFU));
219}
220
226__STATIC_INLINE uint32_t RTC_GetPrescalerRemainderValue(RTC_TypeDef* RTCx)
227{
228 return (uint32_t)((READ_BIT(RTCx->DIVH, RTC_DIVH_DIVH) << 16U) + READ_BIT(RTCx->DIVL, RTC_DIVL_DIVL));
229}
230
240__STATIC_INLINE void DDL_RTC_SetClkSource(uint32_t Source)
241{
242 MODIFY_REG(PMU->CR, PMU_CR_RTCSEL, Source);
243}
244
254__STATIC_INLINE uint32_t DDL_RTC_GetClkSource(void)
255{
256 return (uint32_t)(READ_BIT(PMU->CR, PMU_CR_RTCSEL));
257}
258
267__STATIC_INLINE void DDL_RTC_EnableInitMode(RTC_TypeDef* RTCx)
268{
269 /* Set the Initialization mode */
270 MODIFY_REG(RTCx->CSTS, RTC_INIT_MASK, RTC_CSTS_INITEN);
271}
272
278__STATIC_INLINE void DDL_RTC_DisableInitMode(RTC_TypeDef* RTCx)
279{
280 /* Exit Initialization mode */
281 MODIFY_REG(RTCx->CSTS, RTC_INIT_MASK, (uint32_t)~RTC_CSTS_INITEN);
282}
283
289__STATIC_INLINE void DDL_RTC_EnableClk(void)
290{
291 SET_BIT(PMU->CR, PMU_CR_RTCEN);
292}
293
299__STATIC_INLINE void DDL_RTC_DisableClk(void)
300{
301 CLEAR_BIT(PMU->CR, PMU_CR_RTCEN);
302}
303
307
311
319__STATIC_INLINE void DDL_RTC_SetTime(RTC_TypeDef* RTCx, uint32_t TimerCounter)
320{
321 WRITE_REG(RTCx->CNTH, ((TimerCounter >> 16U) & 0xFFFFU));
322 WRITE_REG(RTCx->CNTL, (TimerCounter & 0xFFFFU));
323}
324
330__STATIC_INLINE uint32_t DDL_RTC_GetTime(RTC_TypeDef* RTCx)
331{
332 uint16_t cnt_high;
333 uint16_t cnt_low;
334
335 cnt_high = READ_BIT(RTCx->CNTH, RTC_CNT_CNTH);
336 cnt_low = READ_BIT(RTCx->CNTL, RTC_CNT_CNTL);
337
338 return ((uint32_t)cnt_high << 16U) | (uint32_t)cnt_low;
339}
340
344
348
355__STATIC_INLINE void DDL_RTC_SetAlarm(RTC_TypeDef* RTCx, uint32_t Time)
356{
357 MODIFY_REG(RTCx->ALRH, RTC_ALRH_ALRH, ((Time >> 16U) & 0xFFFFU));
358 MODIFY_REG(RTCx->ALRL, RTC_ALRL_ALRL, (Time & 0xFFFFU));
359}
360
366__STATIC_INLINE uint32_t DDL_RTC_GetAlarm(RTC_TypeDef* RTCx)
367{
368 return (uint32_t)((READ_BIT(RTCx->ALRH, RTC_ALRH_ALRH) << 16U) + READ_BIT(RTCx->ALRL, RTC_ALRL_ALRL));
369}
370
374
378
384__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_SEC(RTC_TypeDef* RTCx)
385{
386 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_SECFLG) == (RTC_CSTS_SECFLG)) ? 1UL : 0UL);
387}
388
394__STATIC_INLINE void DDL_RTC_ClearFlag_SEC(RTC_TypeDef* RTCx)
395{
396 CLEAR_BIT(RTCx->CSTS, RTC_CSTS_SECFLG);
397}
398
404__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_ALR(RTC_TypeDef* RTCx)
405{
406 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_ALRFLG) == (RTC_CSTS_ALRFLG)) ? 1UL : 0UL);
407}
408
414__STATIC_INLINE void DDL_RTC_ClearFlag_ALR(RTC_TypeDef* RTCx)
415{
416 CLEAR_BIT(RTCx->CSTS, RTC_CSTS_ALRFLG);
417}
418
424__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_OVR(RTC_TypeDef* RTCx)
425{
426 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_OVRFLG) == (RTC_CSTS_OVRFLG)) ? 1UL : 0UL);
427}
428
434__STATIC_INLINE void DDL_RTC_ClearFlag_OVR(RTC_TypeDef* RTCx)
435{
436 CLEAR_BIT(RTCx->CSTS, RTC_CSTS_OVRFLG);
437}
438
444__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_RS(RTC_TypeDef* RTCx)
445{
446 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_RSYNCFLG) == (RTC_CSTS_RSYNCFLG)) ? 1UL : 0UL);
447}
448
454__STATIC_INLINE void DDL_RTC_ClearFlag_RS(RTC_TypeDef* RTCx)
455{
456 WRITE_REG(RTCx->CSTS, (~((RTC_CSTS_RSYNCFLG | RTC_CSTS_INITEN) & 0x0000FFFFU) | (RTCx->CSTS & RTC_CSTS_INITEN)));
457}
458
464__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_CFGM(RTC_TypeDef* RTCx)
465{
466 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_CFGMFLG) == (RTC_CSTS_CFGMFLG)) ? 1UL : 0UL);
467}
468
474__STATIC_INLINE uint32_t DDL_RTC_IsActiveFlag_OCFLG(RTC_TypeDef* RTCx)
475{
476 return ((READ_BIT(RTCx->CSTS, RTC_CSTS_OCFLG) == (RTC_CSTS_OCFLG)) ? 1UL : 0UL);
477}
478
482
486
492__STATIC_INLINE void DDL_RTC_EnableIT_SEC(RTC_TypeDef* RTCx)
493{
494 SET_BIT(RTCx->CTRL, RTC_CTRL_SECIEN);
495}
496
502__STATIC_INLINE void DDL_RTC_DisableIT_SEC(RTC_TypeDef* RTCx)
503{
504 CLEAR_BIT(RTCx->CTRL, RTC_CTRL_SECIEN);
505}
506
512__STATIC_INLINE uint32_t DDL_RTC_IsEnabledIT_SEC(RTC_TypeDef* RTCx)
513{
514 return ((READ_BIT(RTCx->CTRL, RTC_CTRL_SECIEN) == (RTC_CTRL_SECIEN)) ? 1UL : 0UL);
515}
516
522__STATIC_INLINE void DDL_RTC_EnableIT_ALR(RTC_TypeDef* RTCx)
523{
524 SET_BIT(RTCx->CTRL, RTC_CTRL_ALRIEN);
525}
526
532__STATIC_INLINE void DDL_RTC_DisableIT_ALR(RTC_TypeDef* RTCx)
533{
534 CLEAR_BIT(RTCx->CTRL, RTC_CTRL_ALRIEN);
535}
536
542__STATIC_INLINE uint32_t DDL_RTC_IsEnabledIT_ALR(RTC_TypeDef* RTCx)
543{
544 return ((READ_BIT(RTCx->CTRL, RTC_CTRL_ALRIEN) == (RTC_CTRL_ALRIEN)) ? 1UL : 0UL);
545}
546
552__STATIC_INLINE void DDL_RTC_EnableIT_OVR(RTC_TypeDef* RTCx)
553{
554 SET_BIT(RTCx->CTRL, RTC_CTRL_OVRIEN);
555}
556
562__STATIC_INLINE void DDL_RTC_DisableIT_OVR(RTC_TypeDef* RTCx)
563{
564 CLEAR_BIT(RTCx->CTRL, RTC_CTRL_OVRIEN);
565}
566
572__STATIC_INLINE uint32_t DDL_RTC_IsEnabledIT_OVR(RTC_TypeDef* RTCx)
573{
574 return ((READ_BIT(RTCx->CTRL, RTC_CTRL_OVRIEN) == (RTC_CTRL_OVRIEN)) ? 1UL : 0UL);
575}
576
580
581#if defined(USE_FULL_DDL_DRIVER)
585
586ErrorStatus DDL_RTC_DeInit(RTC_TypeDef* RTCx);
587ErrorStatus DDL_RTC_Init(RTC_TypeDef* RTCx, DDL_RTC_InitTypeDef* RTC_InitStruct);
588void DDL_RTC_StructInit(DDL_RTC_InitTypeDef* RTC_InitStruct);
589ErrorStatus DDL_RTC_TIME_Init(RTC_TypeDef* RTCx, DDL_RTC_TimeTypeDef* RTC_TimeStruct);
590void DDL_RTC_TIME_StructInit(DDL_RTC_TimeTypeDef* RTC_TimeStruct);
591ErrorStatus DDL_RTC_ALM_Init(RTC_TypeDef* RTCx, DDL_RTC_AlarmTypeDef* RTC_AlarmStruct);
592void DDL_RTC_ALM_StructInit(DDL_RTC_AlarmTypeDef* RTC_AlarmStruct);
593ErrorStatus DDL_RTC_EnterInitMode(RTC_TypeDef* RTCx);
594ErrorStatus DDL_RTC_ExitInitMode(RTC_TypeDef* RTCx);
595ErrorStatus DDL_RTC_WaitForSynchro(RTC_TypeDef* RTCx);
596ErrorStatus DDL_RTC_WaitForOperationComplete(RTC_TypeDef* RTCx);
597
601#endif /* USE_FULL_DDL_DRIVER */
602
606
610
611#endif /* defined(RTC) */
612
616
617#ifdef __cplusplus
618}
619#endif
620
621#endif /* G32R4XX_DDL_RTC_H */
622
__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.
#define RTC_INIT_MASK
#define RTC_CSTS_INITEN
RTC Alarm structure definition.
RTC Init structures definition.
RTC Time structure definition.