44#ifndef G32R4xx_DDL_PMU_H
45#define G32R4xx_DDL_PMU_H
77#define DDL_PMU_WAKEUP_PIN1 PMU_WKPCR_WKUPEN0
78#define DDL_PMU_WAKEUP_PIN2 PMU_WKPCR_WKUPEN1
79#define DDL_PMU_WAKEUP_PIN3 PMU_WKPCR_WKUPEN2
80#define DDL_PMU_WAKEUP_PIN4 PMU_WKPCR_WKUPEN3
89#define DDL_PMU_WAKEUP_PIN_POLARITY_RISING (0x0U)
90#define DDL_PMU_WAKEUP_PIN_POLARITY_FALLING (0x1U)
91#define DDL_PMU_WAKEUP_PIN_POLARITY_RISING_AND_FALLING (0x2U)
99#define DDL_PMU_STANDBY_PINMODE_ANALOG (0x0U)
100#define DDL_PMU_STANDBY_PINMODE_PU (0x1U)
101#define DDL_PMU_STANDBY_PINMODE_PD (0x2U)
109#define DDL_PMU_EVS_FILTER_NONE (0x00000000UL)
110#define DDL_PMU_EVS_FILTER_2LSICLK (PMU_EVSCR_VDCPVDFILTER_0)
111#define DDL_PMU_EVS_FILTER_4LSICLK (PMU_EVSCR_VDCPVDFILTER_1)
112#define DDL_PMU_EVS_FILTER_8LSICLK (PMU_EVSCR_VDCPVDFILTER)
136#define DDL_PMU_WriteReg(__REG__, __VALUE__) WRITE_REG(PMU->__REG__, (__VALUE__))
143#define DDL_PMU_ReadReg(__REG__) READ_REG(PMU->__REG__)
172 SET_BIT(PMU->WKPCR, Pin);
186 CLEAR_BIT(PMU->WKPCR, Pin);
204 MODIFY_REG(PMU->WKPCR, (PMU_WKPCR_WKUPPOL0 << ((POSITION_VAL(Pin) * 2))), (Polarity << (4 + POSITION_VAL(Pin) * 2)));
221 return (uint32_t)(READ_BIT(PMU->WKPCR, (PMU_WKPCR_WKUPPOL0 << (POSITION_VAL(Pin) * 2))) >> (4 + POSITION_VAL(Pin) * 2));
246 MODIFY_REG(PMU->WKPCR, PMU_WKPCR_APC, ((!!Mode) << PMU_WKPCR_APC_Pos));
249 SET_BIT(PMU->PUCRA, Pin);
250 CLEAR_BIT(PMU->PDCRA, Pin);
254 CLEAR_BIT(PMU->PUCRA, Pin);
255 SET_BIT(PMU->PDCRA, Pin);
259 CLEAR_BIT(PMU->PUCRA, Pin);
260 CLEAR_BIT(PMU->PDCRA, Pin);
278 return (uint32_t)((READ_BIT(PMU->WKPCR, PMU_WKPCR_APC) == PMU_WKPCR_APC ? 1UL : 0UL) *
294 return (uint32_t)(READ_BIT(PMU->SR, Pin));
308 WRITE_REG(PMU->SR, Pin);
318 return (uint32_t)(READ_BIT(PMU->SR, PMU_SR_SBF));
328 WRITE_REG(PMU->SR, PMU_SR_SBF);
346 SET_BIT(PMU->EVSCR, PMU_EVSCR_VDCPVDWKPEN);
356 CLEAR_BIT(PMU->EVSCR, PMU_EVSCR_VDCPVDWKPEN);
366 SET_BIT(PMU->EVSCR, PMU_EVSCR_VDCPVDEN);
376 CLEAR_BIT(PMU->EVSCR, PMU_EVSCR_VDCPVDEN);
390 MODIFY_REG(PMU->EVSCR, PMU_EVSCR_VDCPVDFILTER, Filter);
404 return (uint32_t)(READ_BIT(PMU->EVSCR, PMU_EVSCR_VDCPVDFILTER));
414 MODIFY_REG(PMU->EVSCR, PMU_EVSCR_VDCPVDSEL, threshold << PMU_EVSCR_VDCPVDSEL_Pos);
424 return (uint32_t)(READ_BIT(PMU->EVSCR, PMU_EVSCR_VDCPVDSEL) >> PMU_EVSCR_VDCPVDSEL_Pos);
434 return (uint32_t)(READ_BIT(PMU->SR, PMU_SR_EVSWKF) == PMU_SR_EVSWKF ? 1UL : 0UL);
444 WRITE_REG(PMU->SR, PMU_SR_EVSWKF);
462 SET_BIT(PMU->PVDCR, PMU_PVDCR_PVDEN);
472 CLEAR_BIT(PMU->PVDCR, PMU_PVDCR_PVDEN);
482 MODIFY_REG(PMU->PVDCR, PMU_PVDCR_PVDTHSEL, (Threshold << PMU_PVDCR_PVDTHSEL_Pos));
492 return (uint32_t)(READ_BIT(PMU->PVDCR, PMU_PVDCR_PVDTHSEL) >> PMU_PVDCR_PVDTHSEL_Pos);
502 return (uint32_t)(READ_BIT(PMU->SR, PMU_SR_PVDO) == PMU_SR_PVDO ? 1UL : 0UL);
509#if defined(USE_FULL_DDL_DRIVER)
#define DDL_PMU_STANDBY_PINMODE_PD
#define DDL_PMU_STANDBY_PINMODE_PU
__STATIC_INLINE void DDL_PMU_EnableEVS(void)
Enable EVS pin.
__STATIC_INLINE void DDL_PMU_SetEVSThreshold(uint32_t threshold)
Get EVS thresholds value.
__STATIC_INLINE void DDL_PMU_ClearFlag_EVS(void)
Clear EVS wakeup event flag.
__STATIC_INLINE uint32_t DDL_PMU_GetEVSFilter(void)
Get EVS pin filter.
__STATIC_INLINE void DDL_PMU_EnableEVSWakeUp(void)
Enable EVS pin to wake up in standby mode.
__STATIC_INLINE uint32_t DDL_PMU_IsActiveFlag_EVS(void)
Check if EVS wakeup event occurred or not.
__STATIC_INLINE void DDL_PMU_SetEVSFilter(uint32_t Filter)
Set EVS pin filter.
__STATIC_INLINE void DDL_PMU_DisableEVS(void)
Disable EVS pin.
__STATIC_INLINE uint32_t DDL_PMU_GetEVSThreshold(void)
Get EVS thresholds value.
__STATIC_INLINE void DDL_PMU_DisableEVSWakeUp(void)
Disable EVS pin to wake up in standby mode.
void DDL_PMU_EnterStopModeWFI(void)
Enter Stop Mode by WFI.
void DDL_PMU_EnterStopModeWFE(void)
Enter Stop Mode by WFE.
void DDL_PMU_EnterStandbyModeWFE(void)
Enter Standby Mode by WFE.
void DDL_PMU_EnterStandbyModeWFI(void)
Enter Standby Mode by WFI.
__STATIC_INLINE void DDL_PMU_DisablePVD(void)
Disable PVD.
__STATIC_INLINE uint32_t DDL_PMU_GetPVDThreshold(void)
Get PVD threshold.
__STATIC_INLINE void DDL_PMU_EnablePVD(void)
Enable PVD.
__STATIC_INLINE uint32_t DDL_PMU_IsActiveFlag_PVDOutput(void)
Check if PVD output event occurred or not.
__STATIC_INLINE void DDL_PMU_SetPVDThreshold(uint32_t Threshold)
Set PVD threshold.
__STATIC_INLINE uint32_t DDL_PMU_IsActiveFlag_Standby(void)
Check if standby event occurred or not.
__STATIC_INLINE uint32_t DDL_PMU_IsActiveFlag_WakeUp(uint32_t Pin)
Check if pin wake up event occurred or not.
__STATIC_INLINE uint32_t DDL_PMU_GetPinModeInStandby(uint32_t Pin)
Get pin mode in standby mode.
__STATIC_INLINE void DDL_PMU_SetPinModeInStandby(uint32_t Pin, uint32_t Mode)
Set pin mode in standby mode.
__STATIC_INLINE void DDL_PMU_ClearFlag_Standby(void)
Clear standby flag.
__STATIC_INLINE void DDL_PMU_ClearFlag_WakeUp(uint32_t Pin)
Clear pin wake up flag.
__STATIC_INLINE void DDL_PMU_EnableWakeUpPin(uint32_t Pin)
Enable pin wake up.
__STATIC_INLINE void DDL_PMU_DisableWakeUpPin(uint32_t Pin)
Disable pin wake up.
__STATIC_INLINE void DDL_PMU_SetWakeUpPinPolarity(uint32_t Pin, uint32_t Polarity)
Set wake up pin polarity.
__STATIC_INLINE uint32_t DDL_PMU_GetWakeUpPinPolarity(uint32_t Pin)
Get wake up pin polarity.