HwA_Flagchip_FC7240_V2/Inc/HwA_smc.h

1503 lines
36 KiB
C

/**
* @file HwA_smc.h
* @author Flagchip
* @brief SMC hardware access layer
* @version 2.0.0
* @date 2024-08-20
*
* SDK Version: 2.6.0
*
* @copyright Copyright (c) 2020-2024 Flagchip Semiconductors Co., Ltd.
*
* @details
*/
/* ********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 0.1.0 2023-12-15 Flagchip084 N/A First version for FC7300
* 2.0.0 2024-10-12 Flagchip084 N/A Change version and release
* 2.1.0 2024-11-28 Flagchip0122 N/A Add features for FC7300DQ
******************************************************************************** */
#ifndef _HWA_SMC_H_
#define _HWA_SMC_H_
#include "device_header.h"
#if SMC_INSTANCE_COUNT > 0U
/**
* @defgroup HwA_smc
* @ingroup module_driver_smc
* @{
*/
/********* Local typedef ************/
/** @brief SMC stop mode control */
typedef enum
{
SMC_STOP_MODE = 0U,
SMC_STANDBY_MODE = 4U
} SMC_LpwModeCtrlType;
/** @brief SMC standby mode */
typedef enum
{
SMC_CFG_STANDBY_0 = 0U,
SMC_CFG_STANDBY_1 = 1U,
SMC_CFG_STANDBY_2 = 2U,
SMC_CFG_STANDBY_3 = 3U
} SMC_StandbyModeType;
#if SMC_CLOCKCONFIG_SUPPORT
/**
* @brief SMC clock out source type
*
*/
typedef enum
{
SMC_CLKOUT_SCG_CLKOUT = 0U, /*!< SCG CLKOUT */
SMC_CLKOUT_FOSC_DIVM_CLK = 2U, /*!< FOSC DIVM CLK */
SMC_CLKOUT_SLOW_CLK = 3U, /*!< SLOW CLK */
SMC_CLKOUT_SIRC_DIVM_CLK = 4U, /*!< SIRC DIVM CLK */
SMC_CLKOUT_PLL1_DIVM_CLK = 5U, /*!< PLL1 DIVM CLK */
SMC_CLKOUT_FIRC_DIVM_CLK = 6U, /*!< FIRC DIVM CLK */
SMC_CLKOUT_CORE_CLK = 7U, /*!< CORE CLK */
SMC_CLKOUT_PLL0_DIVM_CLK = 8U, /*!< PLL0 DIVM CLK */
SMC_CLKOUT_BUS_CLK = 9U, /*!< BUS CLK */
SMC_CLKOUT_SIRC_128K_CLK = 10U, /*!< SIRC 128K CLK */
SMC_CLKOUT_AON_CLK = 12U, /*!< AON CLK */
SMC_CLKOUT_RTC_CLK = 14U /*!< AON32K CLK */
} SMC_ClockOutSrcType;
/**
* @brief SMC clock out divide ratio type
*
*/
typedef enum
{
SMC_CLKOUT_DIV_BY1 = 0U, /*!< Divided by 1 */
SMC_CLKOUT_DIV_BY2 = 1U, /*!< Divided by 2 */
SMC_CLKOUT_DIV_BY3 = 2U, /*!< Divided by 3 */
SMC_CLKOUT_DIV_BY4 = 3U, /*!< Divided by 4 */
SMC_CLKOUT_DIV_BY5 = 4U, /*!< Divided by 5 */
SMC_CLKOUT_DIV_BY6 = 5U, /*!< Divided by 6 */
SMC_CLKOUT_DIV_BY7 = 6U, /*!< Divided by 7 */
SMC_CLKOUT_DIV_BY8 = 7U /*!< Divided by 8 */
} SMC_ClockOutDivType;
/**
* @brief Data type for SMC_AONCLKSR[32KAONCLKSR], set AON32KCLK source clock
*
*/
typedef enum
{
SMC_AON32K_SIRCDIV_32K_CLK = 1U, /*!< SMC_AONCLKSR[32KAONCLKSR], SIRCDIV_32K */
SMC_AON32K_SOSC32K_CLK = 2U, /*!< SMC_AONCLKSR[32KAONCLKSR], SOSC32K */
SMC_AON32K_SIRC32K_CLK = 3U /*!< SMC_AONCLKSR[32KAONCLKSR], SIRC32K */
} SMC_AON32KClkSrcType;
/**
* @brief Data type for SMC_RTCCLKSEL[RTCCLKSEL], set RTCCLK source clock
*
*/
typedef enum
{
SMC_RTC_FOSCDIVL_CLK = 0U, /*!< SMC_RTCCLKSEL[RTCCLKSEL], FOSC_DIVL */
SMC_RTC_SIRCDIV_32K_CLK = 1U, /*!< SMC_RTCCLKSEL[RTCCLKSEL], SIRC_DIV */
SMC_RTC_SOSC_CLK = 2U, /*!< SMC_RTCCLKSEL[RTCCLKSEL], SOSC */
SMC_RTC_SIRC32K_CLK = 3U /*!< SMC_RTCCLKSEL[RTCCLKSEL], SIRC_32K */
} SMC_RTCClkSrcType;
/**
* @brief Data type for SMC_AONCLKSR[AONCLKSR], set AONCLK source clock
*
*/
typedef enum
{
SMC_AON_SIRCDIV_128K_CLK = 0U, /*!< SMC_AONCLKSR[AONCLKSR], SIRCDIV_128K */
SMC_AON_SIRC32K_CLK = 1U, /*!< SMC_AONCLKSR[AONCLKSR], SIRC32K */
SMC_AON_SIRCDIV_32K_CLK = 2U, /*!< SMC_AONCLKSR[AONCLKSR], SIRCDIV_32K */
SMC_AON_SIRC32_1K_CLK = 3U /*!< SMC_AONCLKSR[AONCLKSR], SIRC32_1K */
} SMC_AONClkSrcType;
#endif
/********* Local inline function ************/
/**
* @brief Clear stop mode control value
*
*/
LOCAL_INLINE void SMC_HWA_ClearStopModeCtrl(void)
{
SMC->PMCTRL &= ~(uint32_t)SMC_PMCTRL_STOP_MODE_MASK;
}
/**
* @brief Set stop mode control
*
* @param eMode Stop mode control type
*/
LOCAL_INLINE void SMC_HWA_SetStopModeCtrl(SMC_LpwModeCtrlType eMode)
{
SMC->PMCTRL = (uint32_t)eMode;
}
/**
* @brief Clear standby mode
*
*/
LOCAL_INLINE void SMC_HWA_ClearStandbyMode(void)
{
SMC->STANDBY_CFG &= ~(uint32_t)SMC_STANDBY_CFG_OPTION_MASK;
}
/**
* @brief Set standby mode
*
* @param eMode Standby mode type
*/
LOCAL_INLINE void SMC_HWA_SetStandbyMode(SMC_StandbyModeType eMode)
{
SMC->STANDBY_CFG = (uint32_t)eMode;
}
#if SMC_CLOCKCONFIG_SUPPORT
#if SMC_TSTMP0CLOCK_CONFIG_SUPPORT
/**
* @brief Set tstmp0 clock enable
*
*/
LOCAL_INLINE void SMC_HWA_EnableTstmp0Clk(void)
{
SMC->TSTMP0_CLK_CFG |= SMC_TSTMP0_CLK_CFG_EN_MASK;
}
/**
* @brief Set tstmp0 clock disable
*
*/
LOCAL_INLINE void SMC_HWA_DisableTstmp0Clk(void)
{
SMC->TSTMP0_CLK_CFG &= ~(uint32_t)SMC_TSTMP0_CLK_CFG_EN_MASK;
}
/**
* @brief Set TSTMP0_CLK_CFG reg
*
* @param u32Data Value to set
*/
LOCAL_INLINE void SMC_HWA_SetTstmp0_CLk_CfgReg(uint32_t u32Data)
{
SMC->TSTMP0_CLK_CFG = u32Data;
}
/**
* @brief Get TSTMP0_CLK_CFG reg
*
* @return uint32_t Register value
*/
LOCAL_INLINE uint32_t SMC_HWA_GetTstmp0_CLk_CfgReg(void)
{
return SMC->TSTMP0_CLK_CFG;
}
/**
* @brief Lock TSTMP0_CLK_CFG reg
*
*/
LOCAL_INLINE void SMC_HWA_LockTstmp0_CLk_CfgReg(void)
{
SMC->TSTMP0_CLK_CFG |= SMC_TSTMP0_CLK_CFG_LOCK_MASK;
}
/**
* @brief Unlock TSTMP0_CLK_CFG reg
*
*/
LOCAL_INLINE void SMC_HWA_UnlockTstmp0_CLk_CfgReg(void)
{
SMC->TSTMP0_CLK_CFG &= ~(uint32_t)SMC_TSTMP0_CLK_CFG_LOCK_MASK;
}
#endif /* #if SMC_TSTMP0CLOCK_CONFIG_SUPPORT */
/**
* @brief Set PMPORT register
*
* @param u32Data set value
*/
LOCAL_INLINE void SMC_HWA_SetPmportReg(uint32_t u32Data)
{
SMC->PMPROT = u32Data;
}
/**
* @brief Get the value of PGCTRL_PROT.
*
* @return uint32_t the value of PGCTRL_PROT.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetPGCTRL_PROT(void)
{
return ((SMC->PMPROT & SMC_PMPROT_PGCTRL_PROT_MASK) >> SMC_PMPROT_PGCTRL_PROT_SHIFT);
}
/**
* @brief Set PGCTRL_PROT.
*
* @param uint32_t u32Value PGCTRL_PROT value.
*/
LOCAL_INLINE void SMC_HWA_SetPGCTRL_PROT(uint32_t u32Value)
{
SMC->PMPROT = ((SMC->PMPROT & ~SMC_PMPROT_PGCTRL_PROT_MASK) | SMC_PMPROT_PGCTRL_PROT(u32Value));
}
/**
* @brief Get the value of RAMRET_PROT.
*
* @return uint32_t the value of RAMRET_PROT.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetRAMRET_PROT(void)
{
return ((SMC->PMPROT & SMC_PMPROT_RAMRET_PROT_MASK) >> SMC_PMPROT_RAMRET_PROT_SHIFT);
}
/**
* @brief Set RAMRET_PROT.
*
* @param uint32_t u32Value RAMRET_PROT value.
*/
LOCAL_INLINE void SMC_HWA_SetRAMRET_PROT(uint32_t u32Value)
{
SMC->PMPROT = ((SMC->PMPROT & ~SMC_PMPROT_RAMRET_PROT_MASK) | SMC_PMPROT_RAMRET_PROT(u32Value));
}
/**
* @brief Get the value of IOLOCK_PROT.
*
* @return uint32_t the value of IOLOCK_PROT.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetIOLOCK_PROT(void)
{
return ((SMC->PMPROT & SMC_PMPROT_IOLOCK_PROT_MASK) >> SMC_PMPROT_IOLOCK_PROT_SHIFT);
}
/**
* @brief Set IOLOCK_PROT.
*
* @param uint32_t u32Value IOLOCK_PROT value.
*/
LOCAL_INLINE void SMC_HWA_SetIOLOCK_PROT(uint32_t u32Value)
{
SMC->PMPROT = ((SMC->PMPROT & ~SMC_PMPROT_IOLOCK_PROT_MASK) | SMC_PMPROT_IOLOCK_PROT(u32Value));
}
/**
* @brief Get the value of WAKEUP_PROT.
*
* @return uint32_t the value of WAKEUP_PROT.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetWAKEUP_PROT(void)
{
return ((SMC->PMPROT & SMC_PMPROT_WAKEUP_PROT_MASK) >> SMC_PMPROT_WAKEUP_PROT_SHIFT);
}
/**
* @brief Set WAKEUP_PROT.
*
* @param uint32_t u32Value WAKEUP_PROT value.
*/
LOCAL_INLINE void SMC_HWA_SetWAKEUP_PROT(uint32_t u32Value)
{
SMC->PMPROT = (SMC->PMPROT & ~SMC_PMPROT_WAKEUP_PROT_MASK) | SMC_PMPROT_WAKEUP_PROT(u32Value);
}
/**
* @brief Get the value of STANDBY_CFG_PROT.
*
* @return uint32_t the value of STANDBY_CFG_PROT.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetSTANDBY_CFG_PROT(void)
{
return ((SMC->PMPROT & SMC_PMPROT_STANDBY_CFG_PROT_MASK) >> SMC_PMPROT_STANDBY_CFG_PROT_SHIFT);
}
/**
* @brief Set STANDBY_CFG_PROT.
*
* @param uint32_t u32Value STANDBY_CFG_PROT value.
*/
LOCAL_INLINE void SMC_HWA_SetSTANDBY_CFG_PROT(uint32_t u32Value)
{
SMC->PMPROT = ((SMC->PMPROT & ~SMC_PMPROT_STANDBY_CFG_PROT_MASK) | SMC_PMPROT_STANDBY_CFG_PROT(u32Value));
}
/**
* @brief Get the value of PMCTRL_PROT.
*
* @return uint32_t the value of PMCTRL_PROT.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetPMCTRL_PROT(void)
{
return ((SMC->PMPROT & SMC_PMPROT_PMCTRL_PROT_MASK) >> SMC_PMPROT_PMCTRL_PROT_SHIFT);
}
/**
* @brief Set PMCTRL_PROT.
*
* @param uint32_t u32Value PMCTRL_PROT value.
*/
LOCAL_INLINE void SMC_HWA_SetPMCTRL_PROT(uint32_t u32Value)
{
SMC->PMPROT = ((SMC->PMPROT & ~SMC_PMPROT_PMCTRL_PROT_MASK) | SMC_PMPROT_PMCTRL_PROT(u32Value));
}
/**
* @brief Set low power wakeup PADx configure source
*
* @param u8PadNum Low power PAD number
* @param u8PadSrc Low power PAD source
*/
LOCAL_INLINE void SMC_HWA_SetLPWakeUpPadSrc(uint8_t u8PadNum, uint8_t u8PadSrc)
{
SMC->WAKEUP = (((SMC->WAKEUP) & (~(SMC_WAKEUP_LP_WAKEUP_CFG0_MASK >> (4U * (uint32)u8PadNum)))) |
(SMC_WAKEUP_LP_WAKEUP_CFG0(u8PadSrc) >> (4U * (uint32)u8PadNum)));
}
/**
* @brief Set low power wakeup PADx configure source polarity
*
* @param u8PadNum Low power PAD number
* @param u8PadPolarity Low power PAD polarity
*/
LOCAL_INLINE void SMC_HWA_SetLPWakeUpPadPol(uint8_t u8PadNum, uint8_t u8PadPolarity)
{
SMC->WAKEUP = (((SMC->WAKEUP) & (~(SMC_WAKEUP_LP_WAKEUP_POL0_MASK >> (uint32)u8PadNum))) |
(SMC_WAKEUP_LP_WAKEUP_POL0(u8PadPolarity) >> (uint32)u8PadNum));
}
/**
* @brief Get the value of LP_WAKEUP_CFG0.
*
* @return uint32_t the value of LP_WAKEUP_CFG0.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_CFG0(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_CFG0_MASK) >> SMC_WAKEUP_LP_WAKEUP_CFG0_SHIFT);
}
/**
* @brief Set LP_WAKEUP_CFG0.
*
* @param uint32_t u32Value LP_WAKEUP_CFG0 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_CFG0(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_CFG0_MASK) | SMC_WAKEUP_LP_WAKEUP_CFG0(u32Value));
}
/**
* @brief Get the value of LP_WAKEUP_CFG1.
*
* @return uint32_t the value of LP_WAKEUP_CFG1.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_CFG1(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_CFG1_MASK) >> SMC_WAKEUP_LP_WAKEUP_CFG1_SHIFT);
}
/**
* @brief Set LP_WAKEUP_CFG1.
*
* @param uint32_t u32Value LP_WAKEUP_CFG1 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_CFG1(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_CFG1_MASK) | SMC_WAKEUP_LP_WAKEUP_CFG1(u32Value));
}
/**
* @brief Get the value of LP_WAKEUP_CFG2.
*
* @return uint32_t the value of LP_WAKEUP_CFG2.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_CFG2(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_CFG2_MASK) >> SMC_WAKEUP_LP_WAKEUP_CFG2_SHIFT);
}
/**
* @brief Set LP_WAKEUP_CFG2.
*
* @param uint32_t u32Value LP_WAKEUP_CFG2 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_CFG2(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_CFG2_MASK) | SMC_WAKEUP_LP_WAKEUP_CFG2(u32Value));
}
/**
* @brief Get the value of LP_WAKEUP_CFG3.
*
* @return uint32_t the value of LP_WAKEUP_CFG3.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_CFG3(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_CFG3_MASK) >> SMC_WAKEUP_LP_WAKEUP_CFG3_SHIFT);
}
/**
* @brief Set LP_WAKEUP_CFG3.
*
* @param uint32_t u32Value LP_WAKEUP_CFG3 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_CFG3(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_CFG3_MASK) | SMC_WAKEUP_LP_WAKEUP_CFG3(u32Value));
}
/**
* @brief Get the value of LP_WAKEUP_CFG4.
*
* @return uint32_t the value of LP_WAKEUP_CFG4.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_CFG4(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_CFG4_MASK) >> SMC_WAKEUP_LP_WAKEUP_CFG4_SHIFT);
}
/**
* @brief Set LP_WAKEUP_CFG4.
*
* @param uint32_t u32Value LP_WAKEUP_CFG4 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_CFG4(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_CFG4_MASK) | SMC_WAKEUP_LP_WAKEUP_CFG4(u32Value));
}
/**
* @brief Get the value of LP_WAKEUP_POL0.
*
* @return uint32_t the value of LP_WAKEUP_POL0.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_POL0(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_POL0_MASK) >> SMC_WAKEUP_LP_WAKEUP_POL0_SHIFT);
}
/**
* @brief Set LP_WAKEUP_POL0.
*
* @param uint32_t u32Value LP_WAKEUP_POL0 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_POL0(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_POL0_MASK) | SMC_WAKEUP_LP_WAKEUP_POL0(u32Value));
}
/**
* @brief Get the value of LP_WAKEUP_POL1.
*
* @return uint32_t the value of LP_WAKEUP_POL1.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_POL1(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_POL1_MASK) >> SMC_WAKEUP_LP_WAKEUP_POL1_SHIFT);
}
/**
* @brief Set LP_WAKEUP_POL1.
*
* @param uint32_t u32Value LP_WAKEUP_POL1 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_POL1(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_POL1_MASK) | SMC_WAKEUP_LP_WAKEUP_POL1(u32Value));
}
/**
* @brief Get the value of LP_WAKEUP_POL2.
*
* @return uint32_t the value of LP_WAKEUP_POL2.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_POL2(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_POL2_MASK) >> SMC_WAKEUP_LP_WAKEUP_POL2_SHIFT);
}
/**
* @brief Set LP_WAKEUP_POL2.
*
* @param uint32_t u32Value LP_WAKEUP_POL2 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_POL2(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_POL2_MASK) | SMC_WAKEUP_LP_WAKEUP_POL2(u32Value));
}
/**
* @brief Get the value of LP_WAKEUP_POL3.
*
* @return uint32_t the value of LP_WAKEUP_POL3.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_POL3(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_POL3_MASK) >> SMC_WAKEUP_LP_WAKEUP_POL3_SHIFT);
}
/**
* @brief Set LP_WAKEUP_POL3.
*
* @param uint32_t u32Value LP_WAKEUP_POL3 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_POL3(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_POL3_MASK) | SMC_WAKEUP_LP_WAKEUP_POL3(u32Value));
}
/**
* @brief Get the value of LP_WAKEUP_POL4.
*
* @return uint32_t the value of LP_WAKEUP_POL4.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetLP_WAKEUP_POL4(void)
{
return ((SMC->WAKEUP & SMC_WAKEUP_LP_WAKEUP_POL4_MASK) >> SMC_WAKEUP_LP_WAKEUP_POL4_SHIFT);
}
/**
* @brief Set LP_WAKEUP_POL4.
*
* @param uint32_t u32Value LP_WAKEUP_POL4 value.
*/
LOCAL_INLINE void SMC_HWA_SetLP_WAKEUP_POL4(uint32_t u32Value)
{
SMC->WAKEUP = ((SMC->WAKEUP & ~SMC_WAKEUP_LP_WAKEUP_POL4_MASK) | SMC_WAKEUP_LP_WAKEUP_POL4(u32Value));
}
/**
* @brief Get IOLOCK register
*
* @return uint32 register value
*/
LOCAL_INLINE uint32 SMC_HWA_GetIolockReg(void)
{
return SMC->IOLOCK;
}
/**
* @brief Set IOLOCK register
*
* @param u32Data set value
*/
LOCAL_INLINE void SMC_HWA_SetIolockReg(uint32_t u32Data)
{
SMC->IOLOCK = u32Data;
}
/**
* @brief Get the value of IOLOCK_CTRL0.
*
* @return uint32_t the value of IOLOCK_CTRL0.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetIOLOCK_CTRL0(void)
{
return ((SMC->IOLOCK & SMC_IOLOCK_IOLOCK_CTRL0_MASK) >> SMC_IOLOCK_IOLOCK_CTRL0_SHIFT);
}
/**
* @brief Set IOLOCK_CTRL0.
*
* @param uint32_t u8Value IOLOCK_CTRL0 value.
*/
LOCAL_INLINE void SMC_HWA_SetIOLOCK_CTRL0(uint32_t u8Value)
{
SMC->IOLOCK = ((SMC->IOLOCK & ~SMC_IOLOCK_IOLOCK_CTRL0_MASK) | SMC_IOLOCK_IOLOCK_CTRL0(u8Value));
}
/**
* @brief Get the value of IOLOCK_CTRL1.
*
* @return uint32_t the value of IOLOCK_CTRL1.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetIOLOCK_CTRL1(void)
{
return ((SMC->IOLOCK & SMC_IOLOCK_IOLOCK_CTRL1_MASK) >> SMC_IOLOCK_IOLOCK_CTRL1_SHIFT);
}
/**
* @brief Set IOLOCK_CTRL1.
*
* @param uint32_t u8Value IOLOCK_CTRL1 value.
*/
LOCAL_INLINE void SMC_HWA_SetIOLOCK_CTRL1(uint32_t u8Value)
{
SMC->IOLOCK = ((SMC->IOLOCK & ~SMC_IOLOCK_IOLOCK_CTRL1_MASK) | SMC_IOLOCK_IOLOCK_CTRL1(u8Value));
}
/**
* @brief Get the value of IOLOCK_CTRL2.
*
* @return uint32_t the value of IOLOCK_CTRL2.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetIOLOCK_CTRL2(void)
{
return ((SMC->IOLOCK & SMC_IOLOCK_IOLOCK_CTRL2_MASK) >> SMC_IOLOCK_IOLOCK_CTRL2_SHIFT);
}
/**
* @brief Set IOLOCK_CTRL2.
*
* @param uint32_t u32Value IOLOCK_CTRL2 value.
*/
LOCAL_INLINE void SMC_HWA_SetIOLOCK_CTRL2(uint32_t u32Value)
{
SMC->IOLOCK = ((SMC->IOLOCK & ~SMC_IOLOCK_IOLOCK_CTRL2_MASK) | SMC_IOLOCK_IOLOCK_CTRL2(u32Value));
}
/**
* @brief Get the value of IOLOCK_CTRL3.
*
* @return uint32_t the value of IOLOCK_CTRL3.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetIOLOCK_CTRL3(void)
{
return ((SMC->IOLOCK & SMC_IOLOCK_IOLOCK_CTRL3_MASK) >> SMC_IOLOCK_IOLOCK_CTRL3_SHIFT);
}
/**
* @brief Set IOLOCK_CTRL3.
*
* @param uint32_t u32Value IOLOCK_CTRL3 value.
*/
LOCAL_INLINE void SMC_HWA_SetIOLOCK_CTRL3(uint32_t u32Value)
{
SMC->IOLOCK = ((SMC->IOLOCK & ~SMC_IOLOCK_IOLOCK_CTRL3_MASK) | SMC_IOLOCK_IOLOCK_CTRL3(u32Value));
}
/**
* @brief Get the value of IOLOCK_CTRL4.
*
* @return uint32_t the value of IOLOCK_CTRL4.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetIOLOCK_CTRL4(void)
{
return ((SMC->IOLOCK & SMC_IOLOCK_IOLOCK_CTRL4_MASK) >> SMC_IOLOCK_IOLOCK_CTRL4_SHIFT);
}
/**
* @brief Set IOLOCK_CTRL4.
*
* @param uint32_t u32Value IOLOCK_CTRL4 value.
*/
LOCAL_INLINE void SMC_HWA_SetIOLOCK_CTRL4(uint32_t u32Value)
{
SMC->IOLOCK = ((SMC->IOLOCK & ~SMC_IOLOCK_IOLOCK_CTRL4_MASK) | SMC_IOLOCK_IOLOCK_CTRL4(u32Value));
}
/**
* @brief Get the value of RETEN.
*
* @return uint16_t the value of RETEN.
*/
LOCAL_INLINE uint16_t SMC_HWA_GetRETEN(void)
{
return ((SMC->RAMRET & SMC_RAMRET_RETEN_MASK) >> SMC_RAMRET_RETEN_SHIFT);
}
/**
* @brief Set RETEN.
*
* @param uint16_t u16Value RETEN value.
*/
LOCAL_INLINE void SMC_HWA_SetRETEN(uint16_t u16Value)
{
SMC->RAMRET = ((SMC->RAMRET & ~SMC_RAMRET_RETEN_MASK) | SMC_RAMRET_RETEN(u16Value));
}
/**
* @brief Set PGCTRL register
*
* @param u32Data set value
*/
LOCAL_INLINE void SMC_HWA_SetPgctrlReg(uint32_t u32Data)
{
SMC->PGCTRL = u32Data;
}
/**
* @brief Get the value of PG_LOCK_EN.
*
* @return uint32_t the value of PG_LOCK_EN.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetPG_LOCK_EN(void)
{
return ((SMC->PGCTRL & SMC_PGCTRL_PG_LOCK_EN_MASK) >> SMC_PGCTRL_PG_LOCK_EN_SHIFT);
}
/**
* @brief Set PG_LOCK_EN.
*
* @param uint32_t u32Value PG_LOCK_EN value.
*/
LOCAL_INLINE void SMC_HWA_SetPG_LOCK_EN(uint32_t u32Value)
{
SMC->PGCTRL = ((SMC->PGCTRL & ~SMC_PGCTRL_PG_LOCK_EN_MASK) | SMC_PGCTRL_PG_LOCK_EN(u32Value));
}
/**
* @brief Get the value of PG_LOCK_SEL.
*
* @return uint32_t the value of PG_LOCK_SEL.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetPG_LOCK_SEL(void)
{
return ((SMC->PGCTRL & SMC_PGCTRL_PG_LOCK_SEL_MASK) >> SMC_PGCTRL_PG_LOCK_SEL_SHIFT);
}
/**
* @brief Set PG_LOCK_SEL.
*
* @param uint32_t u32Value PG_LOCK_SEL value.
*/
LOCAL_INLINE void SMC_HWA_SetPG_LOCK_SEL(uint32_t u32Value)
{
SMC->PGCTRL = ((SMC->PGCTRL & ~SMC_PGCTRL_PG_LOCK_SEL_MASK) | SMC_PGCTRL_PG_LOCK_SEL(u32Value));
}
/**
* @brief Get the value of PG_POL.
*
* @return uint32_t the value of PG_POL.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetPG_POL(void)
{
return ((SMC->PGCTRL & SMC_PGCTRL_PG_POL_MASK) >> SMC_PGCTRL_PG_POL_SHIFT);
}
/**
* @brief Set PG_POL.
*
* @param uint32_t u32Value PG_POL value.
*/
LOCAL_INLINE void SMC_HWA_SetPG_POL(uint32_t u32Value)
{
SMC->PGCTRL = ((SMC->PGCTRL & ~SMC_PGCTRL_PG_POL_MASK) | SMC_PGCTRL_PG_POL(u32Value));
}
/**
* @brief Get the value of PG_EN.
*
* @return uint32_t the value of PG_EN.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetPG_EN(void)
{
return ((SMC->PGCTRL & SMC_PGCTRL_PG_EN_MASK) >> SMC_PGCTRL_PG_EN_SHIFT);
}
/**
* @brief Set PG_EN.
*
* @param uint32_t u32Value PG_EN value.
*/
LOCAL_INLINE void SMC_HWA_SetPG_EN(uint32_t u32Value)
{
SMC->PGCTRL = ((SMC->PGCTRL & ~SMC_PGCTRL_PG_EN_MASK) | SMC_PGCTRL_PG_EN(u32Value));
}
/**
* @brief Get the value of AON32KCLKSEL.
*
* @return uint32_t the value of AON32KCLKSEL.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetAON32KCLKSEL(void)
{
return ((SMC->AONCLKSR & SMC_AONCLKSR_AON32KCLKSEL_MASK) >> SMC_AONCLKSR_AON32KCLKSEL_SHIFT);
}
/**
* @brief Set AON32KCLKSEL.
*
* @param uint32_t u32Value AON32KCLKSEL value.
*/
LOCAL_INLINE void SMC_HWA_SetAON32KCLKSEL(uint32_t u32Value)
{
SMC->AONCLKSR = ((SMC->AONCLKSR & ~SMC_AONCLKSR_AON32KCLKSEL_MASK) | SMC_AONCLKSR_AON32KCLKSEL(u32Value));
}
/**
* @brief Get the value of RTCCLKSEL.
*
* @return uint32_t the value of RTCCLKSEL.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetRTCCLKSEL(void)
{
return ((SMC->AONCLKSR & SMC_AONCLKSR_RTCCLKSEL_MASK) >> SMC_AONCLKSR_RTCCLKSEL_SHIFT);
}
/**
* @brief Set RTCCLKSEL.
*
* @param uint32_t u32Value RTCCLKSEL value.
*/
LOCAL_INLINE void SMC_HWA_SetRTCCLKSEL(uint32_t u32Value)
{
SMC->AONCLKSR = ((SMC->AONCLKSR & ~SMC_AONCLKSR_RTCCLKSEL_MASK) | SMC_AONCLKSR_RTCCLKSEL(u32Value));
}
/**
* @brief Get the value of AONCLKSR.
*
* @return uint32_t the value of AONCLKSR.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetAONCLKSR(void)
{
return ((SMC->AONCLKSR & SMC_AONCLKSR_AONCLKSEL_MASK) >> SMC_AONCLKSR_AONCLKSEL_SHIFT);
}
/**
* @brief Get the value of SIRCDIV32KEN.
*
* @param SMC the base address of the SMC instance.
* @return uint32_t the value of SIRCDIV32KEN.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetSIRCDIV32KEN(void)
{
return ((SMC->AONCLKSR & SMC_AONCLKSR_SIRCDIV32KEN_MASK) >> SMC_AONCLKSR_SIRCDIV32KEN_SHIFT);
}
/**
* @brief Set SIRCDIV32KEN.
*
* @param uint32_t u32Value SIRCDIV32KEN value.
*/
LOCAL_INLINE void SMC_HWA_SetSIRCDIV32KEN(uint32_t u32Value)
{
SMC->AONCLKSR = ((SMC->AONCLKSR & ~SMC_AONCLKSR_SIRCDIV32KEN_MASK) | SMC_AONCLKSR_SIRCDIV32KEN(u32Value));
}
/**
* @brief Get the value of AON1KCLKEN.
*
* @return uint32_t the value of AON1KCLKEN.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetAON1KCLKEN(void)
{
return ((SMC->AONCLKSR & SMC_AONCLKSR_AON1KCLKEN_MASK) >> SMC_AONCLKSR_AON1KCLKEN_SHIFT);
}
/**
* @brief Set AON1KCLKEN.
*
* @param uint32_t u32Value AON1KCLKEN value.
*/
LOCAL_INLINE void SMC_HWA_SetAON1KCLKEN(uint32_t u32Value)
{
SMC->AONCLKSR = ((SMC->AONCLKSR & ~SMC_AONCLKSR_AON1KCLKEN_MASK) | SMC_AONCLKSR_AON1KCLKEN(u32Value));
}
/**
* @brief Get the value of LOCK.
*
* @return uint32_t the value of LOCK.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetAONCLKSRLOCK(void)
{
return ((SMC->AONCLKSR & SMC_AONCLKSR_LOCK_MASK) >> SMC_AONCLKSR_LOCK_SHIFT);
}
/**
* @brief Set LOCK.
*
* @param uint32_t u32Value LOCK value.
*/
LOCAL_INLINE void SMC_HWA_SetAONCLKSRLOCK(uint32_t u32Value)
{
SMC->AONCLKSR = ((SMC->AONCLKSR & ~SMC_AONCLKSR_LOCK_MASK) | SMC_AONCLKSR_LOCK(u32Value));
}
/**
* @brief Set SMC_AON32KCLK source clock
*
* @param SMC_AON32KClkSrcType SMC_AON32KCLK source type
*/
LOCAL_INLINE void SMC_HWA_SetAON32kClkSrc(SMC_AON32KClkSrcType eClkSrcType)
{
uint32_t u32RegVal = SMC->AONCLKSR;
SMC->AONCLKSR = ((u32RegVal & (~(uint32_t)SMC_AONCLKSR_AON32KCLKSEL_MASK)) | SMC_AONCLKSR_AON32KCLKSEL(eClkSrcType));
}
/**
* @brief Set SMC_RTCCLK source clock
*
* @param SMC_RTCClkSrcType SMC_RTCCLK source type
*/
LOCAL_INLINE void SMC_HWA_SetRTCClkSrc(SMC_RTCClkSrcType eClkSrcType)
{
uint32_t u32RegVal = SMC->AONCLKSR;
SMC->AONCLKSR = ((u32RegVal & (~(uint32_t)SMC_AONCLKSR_RTCCLKSEL_MASK)) | SMC_AONCLKSR_RTCCLKSEL(eClkSrcType));
}
/**
* @brief Set SMC_AONCLK source clock
*
* @param SMC_AONClkSrcType SMC_AONCLK source type
*/
LOCAL_INLINE void SMC_HWA_SetAONClkSrc(SMC_AONClkSrcType eClkSrcType)
{
uint32_t u32RegVal = SMC->AONCLKSR;
SMC->AONCLKSR = ((u32RegVal & (~(uint32_t)SMC_AONCLKSR_AONCLKSEL_MASK)) | SMC_AONCLKSR_AONCLKSEL(eClkSrcType));
}
/**
* @brief Get AONCLKSR register status
*
* @return AONCLKSR register status
*/
LOCAL_INLINE uint32_t SMC_HWA_Get_AONCLKSR(void)
{
return SMC->AONCLKSR;
}
/**
* @brief Get the value of RPM_EXIT_CNT.
*
* @return uint16_t the value of RPM_EXIT_CNT.
*/
LOCAL_INLINE uint16_t SMC_HWA_GetRPM_EXIT_CNT(void)
{
return ((SMC->PCU_CTRL & SMC_PCU_CTRL_RPM_EXIT_CNT_MASK) >> SMC_PCU_CTRL_RPM_EXIT_CNT_SHIFT);
}
/**
* @brief Set RPM_EXIT_CNT.
*
* @param uint16_t u8Value RPM_EXIT_CNT value.
*/
LOCAL_INLINE void SMC_HWA_SetRPM_EXIT_CNT(uint16_t u16Value)
{
SMC->PCU_CTRL = ((SMC->PCU_CTRL & ~SMC_PCU_CTRL_RPM_EXIT_CNT_MASK) | SMC_PCU_CTRL_RPM_EXIT_CNT(u16Value));
}
/**
* @brief Get the value of LOCK.
*
* @return uint32_t the value of LOCK.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetPCULOCK(void)
{
return ((SMC->PCU_CTRL & SMC_PCU_CTRL_LOCK_MASK) >> SMC_PCU_CTRL_LOCK_SHIFT);
}
/**
* @brief Set LOCK.
*
* @param uint32_t u8Value LOCK value.
*/
LOCAL_INLINE void SMC_HWA_SetPCULOCK(uint32_t u32Value)
{
SMC->PCU_CTRL = ((SMC->PCU_CTRL & ~SMC_PCU_CTRL_LOCK_MASK) | SMC_PCU_CTRL_LOCK(u32Value));
}
/**
* @brief Get the value of PAD_ISO_HOLD.
*
* @return uint32_t the value of PAD_ISO_HOLD.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetPAD_ISO_HOLD(void)
{
return ((SMC->ISO_CTRL & SMC_ISO_CTRL_PAD_ISO_HOLD_MASK) >> SMC_ISO_CTRL_PAD_ISO_HOLD_SHIFT);
}
/**
* @brief Set PAD_ISO_HOLD.
*
* @param uint32_t u32Value PAD_ISO_HOLD value.
*/
LOCAL_INLINE void SMC_HWA_SetPAD_ISO_HOLD(uint32_t u32Value)
{
SMC->ISO_CTRL = ((SMC->ISO_CTRL & ~SMC_ISO_CTRL_PAD_ISO_HOLD_MASK) | SMC_ISO_CTRL_PAD_ISO_HOLD(u32Value));
}
/**
* @brief Get the value of PAD_ISO_HOLD_CLR.
*
* @return uint32_t the value of PAD_ISO_HOLD_CLR.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetPAD_ISO_HOLD_CLR(void)
{
return ((SMC->ISO_CTRL & SMC_ISO_CTRL_PAD_ISO_HOLD_CLR_MASK) >> SMC_ISO_CTRL_PAD_ISO_HOLD_CLR_SHIFT);
}
/**
* @brief Set PAD_ISO_HOLD_CLR.
*
* @param uint32_t u32Value PAD_ISO_HOLD_CLR value.
*/
LOCAL_INLINE void SMC_HWA_SetPAD_ISO_HOLD_CLR(uint32_t u32Value)
{
SMC->ISO_CTRL = ((SMC->ISO_CTRL & ~SMC_ISO_CTRL_PAD_ISO_HOLD_CLR_MASK) | SMC_ISO_CTRL_PAD_ISO_HOLD_CLR(u32Value));
}
/**
* @brief Get the value of LOCK.
*
* @return uint32_t the value of LOCK.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetISOLOCK(void)
{
return ((SMC->ISO_CTRL & SMC_ISO_CTRL_LOCK_MASK) >> SMC_ISO_CTRL_LOCK_SHIFT);
}
/**
* @brief Set LOCK.
*
* @param uint32_t u32Value LOCK value.
*/
LOCAL_INLINE void SMC_HWA_SetISOLOCK(uint32_t u32Value)
{
SMC->ISO_CTRL = ((SMC->ISO_CTRL & ~SMC_ISO_CTRL_LOCK_MASK) | SMC_ISO_CTRL_LOCK(u32Value));
}
#if SMC_SCG_WAKEUP_CONFIG_SUPPORT
/**
* @brief Get the value of SCG_WAKEUP_CFG.
*
* @return uint32_t the value of SCG_WAKEUP_CFG.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetSCG_WAKEUP_CFG(void)
{
return ((SMC->SCG_WAKEUP & SMC_SCG_WAKEUP_SCG_WAKEUP_CFG_MASK) >> SMC_SCG_WAKEUP_SCG_WAKEUP_CFG_SHIFT);
}
/**
* @brief Set SCG_WAKEUP_CFG.
*
* @param uint32_t u32Value SCG_WAKEUP_CFG value.
*/
LOCAL_INLINE void SMC_HWA_SetSCG_WAKEUP_CFG(uint32_t u32Value)
{
SMC->SCG_WAKEUP = ((SMC->SCG_WAKEUP & ~SMC_SCG_WAKEUP_SCG_WAKEUP_CFG_MASK) | SMC_SCG_WAKEUP_SCG_WAKEUP_CFG(u32Value));
}
/**
* @brief Get the value of SCG_POL.
*
* @return uint32_t the value of SCG_POL.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetSCG_POL(void)
{
return ((SMC->SCG_WAKEUP & SMC_SCG_WAKEUP_SCG_POL_MASK) >> SMC_SCG_WAKEUP_SCG_POL_SHIFT);
}
/**
* @brief Set SCG_POL.
*
* @param uint32_t u32Value SCG_POL value.
*/
LOCAL_INLINE void SMC_HWA_SetSCG_POL(uint32_t u32Value)
{
SMC->SCG_WAKEUP = ((SMC->SCG_WAKEUP & ~SMC_SCG_WAKEUP_SCG_POL_MASK) | SMC_SCG_WAKEUP_SCG_POL(u32Value));
}
/**
* @brief Get the value of SCG_TRGSEL.
*
* @return uint32_t the value of SCG_TRGSEL.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetSCG_TRGSEL(void)
{
return ((SMC->SCG_WAKEUP & SMC_SCG_WAKEUP_SCG_TRGSEL_MASK) >> SMC_SCG_WAKEUP_SCG_TRGSEL_SHIFT);
}
/**
* @brief Set SCG_TRGSEL.
*
* @param uint32_t u32Value SCG_TRGSEL value.
*/
LOCAL_INLINE void SMC_HWA_SetSCG_TRGSEL(uint32_t u32Value)
{
SMC->SCG_WAKEUP = ((SMC->SCG_WAKEUP & ~SMC_SCG_WAKEUP_SCG_TRGSEL_MASK) | SMC_SCG_WAKEUP_SCG_TRGSEL(u32Value));
}
/**
* @brief Get the value of LOCK.
*
* @return uint32_t the value of LOCK.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetSCG_WAKEUPLOCK(void)
{
return ((SMC->SCG_WAKEUP & SMC_SCG_WAKEUP_LOCK_MASK) >> SMC_SCG_WAKEUP_LOCK_SHIFT);
}
/**
* @brief Set LOCK.
*
* @param uint32_t u32Value LOCK value.
*/
LOCAL_INLINE void SMC_HWA_SetSCG_WAKEUPLOCK(uint32_t u32Value)
{
SMC->SCG_WAKEUP = ((SMC->SCG_WAKEUP & ~SMC_SCG_WAKEUP_LOCK_MASK) | SMC_SCG_WAKEUP_LOCK(u32Value));
}
/**
* @brief Set SCG Wakeup config register.
*
* @param uint32_t u32Value scg wakeup register value.
*/
LOCAL_INLINE void SMC_HWA_SetSCG_WAKEUP_REG(uint32_t u32Value)
{
SMC->SCG_WAKEUP = u32Value & SMC_SCG_WAKEUP_MASK;
}
#endif /* SMC_SCG_WAKEUP_CONFIG_SUPPORT */
/**
* @brief Get the value of GPR_CCM_STANDBY_ABORT_DIS.
*
* @return uint32_t the value of GPR_CCM_STANDBY_ABORT_DIS.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetGPR_CCM_STANDBY_ABORT_DIS(void)
{
return ((SMC->CCM_LPCTRL & SMC_CCM_LPCTRL_GPR_CCM_STANDBY_ABORT_DIS_MASK) >> SMC_CCM_LPCTRL_GPR_CCM_STANDBY_ABORT_DIS_SHIFT);
}
/**
* @brief Set GPR_CCM_STANDBY_ABORT_DIS.
*
* @param uint32_t u32Value GPR_CCM_STANDBY_ABORT_DIS value.
*/
LOCAL_INLINE void SMC_HWA_SetGPR_CCM_STANDBY_ABORT_DIS(uint32_t u32Value)
{
SMC->CCM_LPCTRL = ((SMC->CCM_LPCTRL & ~SMC_CCM_LPCTRL_GPR_CCM_STANDBY_ABORT_DIS_MASK) | SMC_CCM_LPCTRL_GPR_CCM_STANDBY_ABORT_DIS(u32Value));
}
/**
* @brief Get the value of LOCK.
*
* @return uint32_t the value of LOCK.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetCCM_LPCTRLLOCK(void)
{
return ((SMC->CCM_LPCTRL & SMC_CCM_LPCTRL_LOCK_MASK) >> SMC_CCM_LPCTRL_LOCK_SHIFT);
}
/**
* @brief Set LOCK.
*
* @param uint32_t u32Value LOCK value.
*/
LOCAL_INLINE void SMC_HWA_SetCCM_LPCTRLLOCK(uint32_t u32Value)
{
SMC->CCM_LPCTRL = ((SMC->CCM_LPCTRL & ~SMC_CCM_LPCTRL_LOCK_MASK) | SMC_CCM_LPCTRL_LOCK(u32Value));
}
/**
* @brief Get the value of BANK0.
*
* @return uint32_t the value of BANK.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetBANK0(void)
{
return SMC->SW_BANK0;
}
/**
* @brief Set BANK0.
*
* @param uint32_t u32Value BANK value.
*/
LOCAL_INLINE void SMC_HWA_SetBANK0(uint32_t u32Value)
{
SMC->SW_BANK0 = u32Value;
}
/**
* @brief Get the value of BANK1.
*
* @return uint32_t the value of BANK.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetBANK1(void)
{
return SMC->SW_BANK1;
}
/**
* @brief Set BANK1.
*
* @param uint32_t u32Value BANK value.
*/
LOCAL_INLINE void SMC_HWA_SetBANK1(uint32_t u32Value)
{
SMC->SW_BANK1 = u32Value;
}
/**
* @brief Get the value of SGCMP_EN.
*
* @return uint32_t the value of SGCMP_EN.
*/
LOCAL_INLINE uint32_t SMC_HWA_ADCCFG0_GetSGCMP_EN(uint8_t Index)
{
return ((SMC->ADC[Index].CFG0 & SMC_ADC_CFG0_SGCMP_EN_MASK) >> SMC_ADC_CFG0_SGCMP_EN_SHIFT);
}
/**
* @brief Set SGCMP_EN.
*
* @param uint32_t u32Value SGCMP_EN value.
*/
LOCAL_INLINE void SMC_HWA_ADCCFG0_SetSGCMP_EN(uint8_t Index, uint32_t u32Value)
{
SMC->ADC[Index].CFG0 = ((SMC->ADC[Index].CFG0 & ~SMC_ADC_CFG0_SGCMP_EN_MASK) | SMC_ADC_CFG0_SGCMP_EN(u32Value));
}
/**
* @brief Get the value of SGCMP_IEN.
*
* @return uint32_t the value of SGCMP_IEN.
*/
LOCAL_INLINE uint32_t SMC_HWA_ADCCFG0_GetSGCMP_IEN(uint8_t Index)
{
return ((SMC->ADC[Index].CFG0 & SMC_ADC_CFG0_SGCMP_IEN_MASK) >> SMC_ADC_CFG0_SGCMP_IEN_SHIFT);
}
/**
* @brief Set SGCMP_IEN.
*
* @param uint32_t u32Value SGCMP_IEN value.
*/
LOCAL_INLINE void SMC_HWA_ADCCFG0_SetSGCMP_IEN(uint8_t Index, uint32_t u32Value)
{
SMC->ADC[Index].CFG0 = ((SMC->ADC[Index].CFG0 & ~SMC_ADC_CFG0_SGCMP_IEN_MASK) | SMC_ADC_CFG0_SGCMP_IEN(u32Value));
}
/**
* @brief Set SGCMP_FLAG_CLR.
*
*/
LOCAL_INLINE void SMC_HWA_ADCCFG0_CLRSGCMPFLAG(uint8_t Index)
{
SMC->ADC[Index].CFG0 |= SMC_ADC_CFG0_SGCMP_FLAG_CLR_MASK;
}
/**
* @brief Get the value of SGCMP_REF_SEL.
*
* @return uint32_t the value of SGCMP_REF_SEL.
*/
LOCAL_INLINE uint32_t SMC_HWA_ADCCFG0_GetSGCMPREFSEL(uint8_t Index)
{
return ((SMC->ADC[Index].CFG0 & SMC_ADC_CFG0_SGCMP_REF_SEL_MASK) >> SMC_ADC_CFG0_SGCMP_REF_SEL_SHIFT);
}
/**
* @brief Set SGCMP_REF_SEL.
*
* @param uint32_t u32Value SGCMP_REF_SEL value.
*/
LOCAL_INLINE void SMC_HWA_ADCCFG0_SetSGCMP_REF_SEL(uint8_t Index, uint32_t u32Value)
{
SMC->ADC[Index].CFG0 = ((SMC->ADC[Index].CFG0 & ~SMC_ADC_CFG0_SGCMP_REF_SEL_MASK) | SMC_ADC_CFG0_SGCMP_REF_SEL(u32Value));
}
/**
* @brief Get ADC_CFG0.
*
* @return uint32_t the value of ADC_CFG0.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetADCCFG0(uint8_t Index)
{
return SMC->ADC[Index].CFG0;
}
/**
* @brief Set ADC_CFG0.
*
* @param uint32_t u32Value ADC_CFG0 value.
*/
LOCAL_INLINE void SMC_HWA_SetADCCFG0(uint8_t Index, uint32_t u32Value)
{
SMC->ADC[Index].CFG0 = u32Value;
}
/**
* @brief Get the value of SGCMP_ACT_SEL.
*
* @return uint32_t the value of SGCMP_ACT_SEL.
*/
LOCAL_INLINE uint32_t SMC_HWA_ADCCFG1_GetSGCMP_ACT_SEL(uint8_t Index)
{
return ((SMC->ADC[Index].CFG1 & SMC_ADC_CFG1_SGCMP_ACT_SEL_MASK) >> SMC_ADC_CFG1_SGCMP_ACT_SEL_SHIFT);
}
/**
* @brief Set SGCMP_ACT_SEL.
*
* @param uint32_t u32Value SGCMP_ACT_SEL value.
*/
LOCAL_INLINE void SMC_HWA_ADCCFG1_SetSGCMP_ACT_SEL(uint8_t Index, uint32_t u32Value)
{
SMC->ADC[Index].CFG1 = ((SMC->ADC[Index].CFG1 & ~SMC_ADC_CFG1_SGCMP_ACT_SEL_MASK) | SMC_ADC_CFG1_SGCMP_ACT_SEL(u32Value));
}
/**
* @brief Get ADC_CFG1.
*
* @return uint32_t the value of ADC_CFG1.
*/
LOCAL_INLINE uint32_t SMC_HWA_GetADCCFG1(uint8_t Index)
{
return SMC->ADC[Index].CFG1;
}
/**
* @brief Set ADC_CFG1.
*
* @param uint32_t u32Value ADC_CFG1 value.
*/
LOCAL_INLINE void SMC_HWA_SetADCCFG1(uint8_t Index, uint32_t u32Value)
{
SMC->ADC[Index].CFG1 = u32Value;
}
/**
* @brief Get the value of SGCMP_ON.
*
* @return uint32_t the value of SGCMP_ON.
*/
LOCAL_INLINE uint32_t SMC_HWA_ADCRES_GetSGCMP_ON(uint8_t Index)
{
return ((SMC->ADC[Index].RES & SMC_ADC_RES_SGCMP_ON_MASK) >> SMC_ADC_RES_SGCMP_ON_SHIFT);
}
/**
* @brief Get the value of SGCMP_FLAG.
*
* @return uint32_t the value of SGCMP_FLAG.
*/
LOCAL_INLINE uint32_t SMC_HWA_ADCRES_GetSGCMP_FLAG(uint8_t Index)
{
return ((SMC->ADC[Index].RES & SMC_ADC_RES_SGCMP_FLAG_MASK) >> SMC_ADC_RES_SGCMP_FLAG_SHIFT);
}
/**
* @brief Get the value of SGCMP_RES.
*
* @return uint32_t the value of SGCMP_RES.
*/
LOCAL_INLINE uint32_t SMC_HWA_ADCRES_GetSGCMP_RES(uint8_t Index)
{
return ((SMC->ADC[Index].RES & SMC_ADC_RES_SGCMP_RES_MASK) >> SMC_ADC_RES_SGCMP_RES_SHIFT);
}
/**
* @brief Set clock out control register
*
* @param u32val the value to be set
*/
LOCAL_INLINE void SMC_HWA_Set_CLKOUT_CTRL(uint32_t u32val)
{
SMC->CLKOUT_CTRL = u32val;
}
/**
* @brief Get clock out control register
*
* @return Register status
*/
LOCAL_INLINE uint32_t SMC_HWA_Get_CLKOUT_CTRL(void)
{
return SMC->CLKOUT_CTRL;
}
/**
* @brief Enable SMC clock out
*
*/
LOCAL_INLINE void SMC_HWA_EnableClockOut(void)
{
SMC->CLKOUT_CTRL |= (uint32_t)SMC_CLKOUT_CTRL_EN_MASK;
}
/**
* @brief Disable SMC clock out
*
*/
LOCAL_INLINE void SMC_HWA_DisableClockOut(void)
{
SMC->CLKOUT_CTRL &= ~(uint32_t)SMC_CLKOUT_CTRL_EN_MASK;
}
/**
* @brief Get CLKOUT source Select
*
* @return SMC_ClockOutSrcType SMC clock out source
*/
LOCAL_INLINE SMC_ClockOutSrcType SMC_HWA_GetClkOutSel(void)
{
uint32_t u32RegVal = (SMC->CLKOUT_CTRL & SMC_CLKOUT_CTRL_SEL_MASK) >> SMC_CLKOUT_CTRL_SEL_SHIFT;
return (SMC_ClockOutSrcType)u32RegVal;
}
/**
* @brief Get CLKOUT SMC clock out divider
*
* @return SMC_ClockOutDivType SMC clock out divider
*/
LOCAL_INLINE SMC_ClockOutDivType SMC_HWA_GetClkOutDiv(void)
{
uint32_t u32RegVal = (SMC->CLKOUT_CTRL & SMC_CLKOUT_CTRL_DIV_MASK) >> SMC_CLKOUT_CTRL_DIV_SHIFT;
return (SMC_ClockOutDivType)u32RegVal;
}
/**
* @brief Set CLKOUTDIV
*
* @param eDivType SMC clock out devide ratio type
*/
LOCAL_INLINE void SMC_HWA_SetClkOutDiv(SMC_ClockOutDivType eDivType)
{
uint32_t u32RegVal = SMC->CLKOUT_CTRL;
SMC->CLKOUT_CTRL = ((u32RegVal & (~(uint32_t)SMC_CLKOUT_CTRL_DIV_MASK)) | SMC_CLKOUT_CTRL_DIV(eDivType));
}
/**
* @brief Set CLKOUT Select
*
* @param eClkSrcType SMC clock out devide ratio type
*/
LOCAL_INLINE void SMC_HWA_SetClkOutSel(SMC_ClockOutSrcType eClkSrcType)
{
uint32_t u32RegVal = SMC->CLKOUT_CTRL;
SMC->CLKOUT_CTRL = ((u32RegVal & (~(uint32_t)SMC_CLKOUT_CTRL_SEL_MASK)) | SMC_CLKOUT_CTRL_SEL(eClkSrcType));
}
/**
* @brief Lock SMC_CLKOUT_CTRL register
*
*/
LOCAL_INLINE void SMC_HWA_LockCLKOUT_CTRL(void)
{
SMC->CLKOUT_CTRL |= (uint32_t)SMC_CLKOUT_CTRL_LOCK_MASK;
}
/**
* @brief Get SMC_CLKOUT_CTRL register lock status
*
* @return Lock status
*/
LOCAL_INLINE uint32_t SMC_HWA_CLKOUT_CTRL_GetLockStatus(void)
{
return (SMC->CLKOUT_CTRL & (uint32_t)SMC_CLKOUT_CTRL_LOCK_MASK);
}
/** @}*/
#endif /* #if SMC_CLOCKCONFIG_SUPPORT */
#endif /* #if SMC_INSTANCE_COUNT > 0U */
#endif /* #ifndef _HWA_SMC_H_ */