607 lines
21 KiB
C
607 lines
21 KiB
C
|
|
/**
|
||
|
|
*******************************************************************************************************
|
||
|
|
* @file fm33lg0xx_fl_svd.h
|
||
|
|
* @author FMSH Application Team
|
||
|
|
* @brief Head file of SVD FL Module
|
||
|
|
*******************************************************************************************************
|
||
|
|
* @attention
|
||
|
|
*
|
||
|
|
* Copyright (c) [2021] [Fudan Microelectronics]
|
||
|
|
* THIS SOFTWARE is licensed under Mulan PSL v2.
|
||
|
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||
|
|
* You may obtain a copy of Mulan PSL v2 at:
|
||
|
|
* http://license.coscl.org.cn/MulanPSL2
|
||
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||
|
|
* See the Mulan PSL v2 for more details.
|
||
|
|
*
|
||
|
|
*******************************************************************************************************
|
||
|
|
*/
|
||
|
|
|
||
|
|
|
||
|
|
/* Define to prevent recursive inclusion---------------------------------------------------------------*/
|
||
|
|
#ifndef __FM33LG0XX_FL_SVD_H
|
||
|
|
#define __FM33LG0XX_FL_SVD_H
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C" {
|
||
|
|
#endif
|
||
|
|
/* Includes -------------------------------------------------------------------------------------------*/
|
||
|
|
#include "fm33lg0xx_fl_def.h"
|
||
|
|
/** @addtogroup FM33LG0XX_FL_Driver
|
||
|
|
* @{
|
||
|
|
*/
|
||
|
|
|
||
|
|
/** @defgroup SVD SVD
|
||
|
|
* @brief SVD FL driver
|
||
|
|
* @{
|
||
|
|
*/
|
||
|
|
|
||
|
|
/* Exported types -------------------------------------------------------------------------------------*/
|
||
|
|
/** @defgroup SVD_FL_ES_INIT SVD Exported Init structures
|
||
|
|
* @{
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief FL SVD Init Sturcture definition
|
||
|
|
*/
|
||
|
|
|
||
|
|
typedef struct
|
||
|
|
{
|
||
|
|
/* 参考电压 */
|
||
|
|
uint32_t referenceVoltage;
|
||
|
|
|
||
|
|
/* 报警阈值 */
|
||
|
|
uint32_t warningThreshold;
|
||
|
|
|
||
|
|
/* 数字滤波 */
|
||
|
|
uint32_t digitalFilter;
|
||
|
|
|
||
|
|
/* 工作模式 */
|
||
|
|
uint32_t workMode;
|
||
|
|
|
||
|
|
/* 间歇使能间隔 */
|
||
|
|
uint32_t enablePeriod;
|
||
|
|
|
||
|
|
/* SVS通道选择 */
|
||
|
|
uint32_t SVSChannel;
|
||
|
|
|
||
|
|
} FL_SVD_InitTypeDef;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @}
|
||
|
|
*/
|
||
|
|
/* Exported constants ---------------------------------------------------------------------------------*/
|
||
|
|
/** @defgroup SVD_FL_Exported_Constants SVD Exported Constants
|
||
|
|
* @{
|
||
|
|
*/
|
||
|
|
|
||
|
|
#define SVD_CFGR_LVL_Pos (4U)
|
||
|
|
#define SVD_CFGR_LVL_Msk (0xfU << SVD_CFGR_LVL_Pos)
|
||
|
|
#define SVD_CFGR_LVL SVD_CFGR_LVL_Msk
|
||
|
|
|
||
|
|
#define SVD_CFGR_DFEN_Pos (3U)
|
||
|
|
#define SVD_CFGR_DFEN_Msk (0x1U << SVD_CFGR_DFEN_Pos)
|
||
|
|
#define SVD_CFGR_DFEN SVD_CFGR_DFEN_Msk
|
||
|
|
|
||
|
|
#define SVD_CFGR_MOD_Pos (2U)
|
||
|
|
#define SVD_CFGR_MOD_Msk (0x1U << SVD_CFGR_MOD_Pos)
|
||
|
|
#define SVD_CFGR_MOD SVD_CFGR_MOD_Msk
|
||
|
|
|
||
|
|
#define SVD_CFGR_ITVL_Pos (0U)
|
||
|
|
#define SVD_CFGR_ITVL_Msk (0x3U << SVD_CFGR_ITVL_Pos)
|
||
|
|
#define SVD_CFGR_ITVL SVD_CFGR_ITVL_Msk
|
||
|
|
|
||
|
|
#define SVD_CR_SVS0EN_Pos (1U)
|
||
|
|
#define SVD_CR_SVS0EN_Msk (0x1U << SVD_CR_SVS0EN_Pos)
|
||
|
|
#define SVD_CR_SVS0EN SVD_CR_SVS0EN_Msk
|
||
|
|
|
||
|
|
#define SVD_CR_EN_Pos (0U)
|
||
|
|
#define SVD_CR_EN_Msk (0x1U << SVD_CR_EN_Pos)
|
||
|
|
#define SVD_CR_EN SVD_CR_EN_Msk
|
||
|
|
|
||
|
|
#define SVD_IER_PFIE_Pos (1U)
|
||
|
|
#define SVD_IER_PFIE_Msk (0x1U << SVD_IER_PFIE_Pos)
|
||
|
|
#define SVD_IER_PFIE SVD_IER_PFIE_Msk
|
||
|
|
|
||
|
|
#define SVD_IER_PRIE_Pos (0U)
|
||
|
|
#define SVD_IER_PRIE_Msk (0x1U << SVD_IER_PRIE_Pos)
|
||
|
|
#define SVD_IER_PRIE SVD_IER_PRIE_Msk
|
||
|
|
|
||
|
|
#define SVD_ISR_SVDO_Pos (8U)
|
||
|
|
#define SVD_ISR_SVDO_Msk (0x1U << SVD_ISR_SVDO_Pos)
|
||
|
|
#define SVD_ISR_SVDO SVD_ISR_SVDO_Msk
|
||
|
|
|
||
|
|
#define SVD_ISR_SVDR_Pos (7U)
|
||
|
|
#define SVD_ISR_SVDR_Msk (0x1U << SVD_ISR_SVDR_Pos)
|
||
|
|
#define SVD_ISR_SVDR SVD_ISR_SVDR_Msk
|
||
|
|
|
||
|
|
#define SVD_ISR_PFF_Pos (1U)
|
||
|
|
#define SVD_ISR_PFF_Msk (0x1U << SVD_ISR_PFF_Pos)
|
||
|
|
#define SVD_ISR_PFF SVD_ISR_PFF_Msk
|
||
|
|
|
||
|
|
#define SVD_ISR_PRF_Pos (0U)
|
||
|
|
#define SVD_ISR_PRF_Msk (0x1U << SVD_ISR_PRF_Pos)
|
||
|
|
#define SVD_ISR_PRF SVD_ISR_PRF_Msk
|
||
|
|
|
||
|
|
#define SVD_VSR_EN_Pos (0U)
|
||
|
|
#define SVD_VSR_EN_Msk (0x7U << SVD_VSR_EN_Pos)
|
||
|
|
#define SVD_VSR_EN SVD_VSR_EN_Msk
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
#define FL_SVD_REFERENCE_1P0V (0x1U << 2U)
|
||
|
|
#define FL_SVD_REFERENCE_0P95V (0x1U << 1U)
|
||
|
|
#define FL_SVD_REFERENCE_0P9V (0x1U << 0U)
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP0 (0x0U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP1 (0x1U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP2 (0x2U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP3 (0x3U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP4 (0x4U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP5 (0x5U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP6 (0x6U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP7 (0x7U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP8 (0x8U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP9 (0x9U << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP10 (0xaU << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP11 (0xbU << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP12 (0xcU << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP13 (0xdU << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP14 (0xeU << SVD_CFGR_LVL_Pos)
|
||
|
|
#define FL_SVD_WARNING_THRESHOLD_GROUP15 (0xfU << SVD_CFGR_LVL_Pos)
|
||
|
|
|
||
|
|
|
||
|
|
#define FL_SVD_WORK_MODE_CONTINUOUS (0x0U << SVD_CFGR_MOD_Pos)
|
||
|
|
#define FL_SVD_WORK_MODE_PERIODIC (0x1U << SVD_CFGR_MOD_Pos)
|
||
|
|
|
||
|
|
|
||
|
|
#define FL_SVD_ENABLE_PERIOD_62P5MS (0x0U << SVD_CFGR_ITVL_Pos)
|
||
|
|
#define FL_SVD_ENABLE_PERIOD_256MS (0x1U << SVD_CFGR_ITVL_Pos)
|
||
|
|
#define FL_SVD_ENABLE_PERIOD_1000MS (0x2U << SVD_CFGR_ITVL_Pos)
|
||
|
|
#define FL_SVD_ENABLE_PERIOD_4000MS (0x3U << SVD_CFGR_ITVL_Pos)
|
||
|
|
|
||
|
|
|
||
|
|
#define FL_SVD_POWER_STATUS_FALLING (0x0U << SVD_ISR_SVDO_Pos)
|
||
|
|
#define FL_SVD_POWER_STATUS_RISING (0x1U << SVD_ISR_SVDO_Pos)
|
||
|
|
|
||
|
|
#define FL_SVD_LATCHED_POWER_STATUS_FALLING (0x0U << SVD_ISR_SVDR_Pos)
|
||
|
|
#define FL_SVD_LATCHED_POWER_STATUS_RISING (0x1U << SVD_ISR_SVDR_Pos)
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @}
|
||
|
|
*/
|
||
|
|
/* Exported functions ---------------------------------------------------------------------------------*/
|
||
|
|
/** @defgroup SVD_FL_Exported_Functions SVD Exported Functions
|
||
|
|
* @{
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Set SVD Threshold Warning Level
|
||
|
|
* @rmtoll CFGR LVL FL_SVD_SetWarningThreshold
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @param level This parameter can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP0
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP1
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP2
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP3
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP4
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP5
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP6
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP7
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP8
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP9
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP10
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP11
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP12
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP13
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP14
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP15
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_SetWarningThreshold(SVD_Type *SVDx, uint32_t level)
|
||
|
|
{
|
||
|
|
MODIFY_REG(SVDx->CFGR, SVD_CFGR_LVL_Msk, level);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Warning Threshold Level
|
||
|
|
* @rmtoll CFGR LVL FL_SVD_GetWarningThreshold
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval Returned value can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP0
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP1
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP2
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP3
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP4
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP5
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP6
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP7
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP8
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP9
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP10
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP11
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP12
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP13
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP14
|
||
|
|
* @arg @ref FL_SVD_WARNING_THRESHOLD_GROUP15
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_GetWarningThreshold(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->CFGR, SVD_CFGR_LVL_Msk));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Enable SVD Digital Filter
|
||
|
|
* @rmtoll CFGR DFEN FL_SVD_EnableDigitalFilter
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_EnableDigitalFilter(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
SET_BIT(SVDx->CFGR, SVD_CFGR_DFEN_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Digital Filter Enable Status
|
||
|
|
* @rmtoll CFGR DFEN FL_SVD_IsEnabledDigitalFilter
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval State of bit (1 or 0).
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_IsEnabledDigitalFilter(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->CFGR, SVD_CFGR_DFEN_Msk) == SVD_CFGR_DFEN_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Disable SVD Digital Filter
|
||
|
|
* @rmtoll CFGR DFEN FL_SVD_DisableDigitalFilter
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_DisableDigitalFilter(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
CLEAR_BIT(SVDx->CFGR, SVD_CFGR_DFEN_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Set SVD Work Mode
|
||
|
|
* @rmtoll CFGR MOD FL_SVD_SetWorkMode
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @param mode This parameter can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_WORK_MODE_CONTINUOUS
|
||
|
|
* @arg @ref FL_SVD_WORK_MODE_PERIODIC
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_SetWorkMode(SVD_Type *SVDx, uint32_t mode)
|
||
|
|
{
|
||
|
|
MODIFY_REG(SVDx->CFGR, SVD_CFGR_MOD_Msk, mode);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Work Mode
|
||
|
|
* @rmtoll CFGR MOD FL_SVD_GetWorkMode
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval Returned value can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_WORK_MODE_CONTINUOUS
|
||
|
|
* @arg @ref FL_SVD_WORK_MODE_PERIODIC
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_GetWorkMode(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->CFGR, SVD_CFGR_MOD_Msk));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Set SVD Enable Period
|
||
|
|
* @rmtoll CFGR ITVL FL_SVD_SetEnablePeriod
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @param period This parameter can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_ENABLE_PERIOD_62P5MS
|
||
|
|
* @arg @ref FL_SVD_ENABLE_PERIOD_256MS
|
||
|
|
* @arg @ref FL_SVD_ENABLE_PERIOD_1000MS
|
||
|
|
* @arg @ref FL_SVD_ENABLE_PERIOD_4000MS
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_SetEnablePeriod(SVD_Type *SVDx, uint32_t period)
|
||
|
|
{
|
||
|
|
MODIFY_REG(SVDx->CFGR, SVD_CFGR_ITVL_Msk, period);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Work Interval
|
||
|
|
* @rmtoll CFGR ITVL FL_SVD_GetEnablePeriod
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval Returned value can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_ENABLE_PERIOD_62P5MS
|
||
|
|
* @arg @ref FL_SVD_ENABLE_PERIOD_256MS
|
||
|
|
* @arg @ref FL_SVD_ENABLE_PERIOD_1000MS
|
||
|
|
* @arg @ref FL_SVD_ENABLE_PERIOD_4000MS
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_GetEnablePeriod(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->CFGR, SVD_CFGR_ITVL_Msk));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Enable External SVS Channel
|
||
|
|
* @rmtoll CR SVS0EN FL_SVD_EnableSVSChannel
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_EnableSVSChannel(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
SET_BIT(SVDx->CR, SVD_CR_SVS0EN_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get External SVS Channel Enable Status
|
||
|
|
* @rmtoll CR SVS0EN FL_SVD_IsEnabledSVSChannel
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval State of bit (1 or 0).
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_IsEnabledSVSChannel(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->CR, SVD_CR_SVS0EN_Msk) == SVD_CR_SVS0EN_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Disable External SVS Channel
|
||
|
|
* @rmtoll CR SVS0EN FL_SVD_DisableSVSChannel
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_DisableSVSChannel(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
CLEAR_BIT(SVDx->CR, SVD_CR_SVS0EN_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Enable SVD
|
||
|
|
* @rmtoll CR EN FL_SVD_Enable
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_Enable(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
SET_BIT(SVDx->CR, SVD_CR_EN_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Enable Status
|
||
|
|
* @rmtoll CR EN FL_SVD_IsEnabled
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval State of bit (1 or 0).
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_IsEnabled(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->CR, SVD_CR_EN_Msk) == SVD_CR_EN_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Disable SVD
|
||
|
|
* @rmtoll CR EN FL_SVD_Disable
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_Disable(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
CLEAR_BIT(SVDx->CR, SVD_CR_EN_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Enable Power Fall Interrupt
|
||
|
|
* @rmtoll IER PFIE FL_SVD_EnableIT_PowerFall
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_EnableIT_PowerFall(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
SET_BIT(SVDx->IER, SVD_IER_PFIE_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get Power Fall Interrupt Status
|
||
|
|
* @rmtoll IER PFIE FL_SVD_IsEnabledIT_PowerFall
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval State of bit (1 or 0).
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_IsEnabledIT_PowerFall(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->IER, SVD_IER_PFIE_Msk) == SVD_IER_PFIE_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Disable Power Fall Interrupt
|
||
|
|
* @rmtoll IER PFIE FL_SVD_DisableIT_PowerFall
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_DisableIT_PowerFall(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
CLEAR_BIT(SVDx->IER, SVD_IER_PFIE_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Enable Power Rise Interrupt
|
||
|
|
* @rmtoll IER PRIE FL_SVD_EnableIT_PowerRise
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_EnableIT_PowerRise(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
SET_BIT(SVDx->IER, SVD_IER_PRIE_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get Power Rise Interrupt Status
|
||
|
|
* @rmtoll IER PRIE FL_SVD_IsEnabledIT_PowerRise
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval State of bit (1 or 0).
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_IsEnabledIT_PowerRise(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->IER, SVD_IER_PRIE_Msk) == SVD_IER_PRIE_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Disable Power Rise Interrupt
|
||
|
|
* @rmtoll IER PRIE FL_SVD_DisableIT_PowerRise
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_DisableIT_PowerRise(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
CLEAR_BIT(SVDx->IER, SVD_IER_PRIE_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Current Power Status
|
||
|
|
* @rmtoll ISR SVDO FL_SVD_GetCurrentPowerStatus
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval Returned value can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_POWER_STATUS_FALLING
|
||
|
|
* @arg @ref FL_SVD_POWER_STATUS_RISING
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_GetCurrentPowerStatus(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->ISR, SVD_ISR_SVDO_Msk));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Latched Power Status
|
||
|
|
* @rmtoll ISR SVDR FL_SVD_GetLatchedPowerStatus
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval Returned value can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_LATCHED_POWER_STATUS_FALLING
|
||
|
|
* @arg @ref FL_SVD_LATCHED_POWER_STATUS_RISING
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_GetLatchedPowerStatus(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->ISR, SVD_ISR_SVDR_Msk));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Power Fall Flag
|
||
|
|
* @rmtoll ISR PFF FL_SVD_IsActiveFlag_PowerFall
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval State of bit (1 or 0).
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_IsActiveFlag_PowerFall(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->ISR, SVD_ISR_PFF_Msk) == (SVD_ISR_PFF_Msk));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Clear SVD Power Fall Flag
|
||
|
|
* @rmtoll ISR PFF FL_SVD_ClearFlag_PowerFall
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_ClearFlag_PowerFall(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
WRITE_REG(SVDx->ISR, SVD_ISR_PFF_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Power Rise Flag
|
||
|
|
* @rmtoll ISR PRF FL_SVD_IsActiveFlag_PowerRise
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval State of bit (1 or 0).
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_IsActiveFlag_PowerRise(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->ISR, SVD_ISR_PRF_Msk) == (SVD_ISR_PRF_Msk));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Clear SVD Power Rise Flag
|
||
|
|
* @rmtoll ISR PRF FL_SVD_ClearFlag_PowerRise
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_ClearFlag_PowerRise(SVD_Type *SVDx)
|
||
|
|
{
|
||
|
|
WRITE_REG(SVDx->ISR, SVD_ISR_PRF_Msk);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Enable SVD Reference
|
||
|
|
* @rmtoll VSR EN FL_SVD_EnableReference
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @param ref This parameter can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_REFERENCE_1P0V
|
||
|
|
* @arg @ref FL_SVD_REFERENCE_0P95V
|
||
|
|
* @arg @ref FL_SVD_REFERENCE_0P9V
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_EnableReference(SVD_Type *SVDx, uint32_t ref)
|
||
|
|
{
|
||
|
|
WRITE_REG(SVDx->VSR, ((ref & 0x7) << 0x0U));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Get SVD Reference Enable Status
|
||
|
|
* @rmtoll VSR EN FL_SVD_IsEnabledReference
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @param ref This parameter can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_REFERENCE_1P0V
|
||
|
|
* @arg @ref FL_SVD_REFERENCE_0P95V
|
||
|
|
* @arg @ref FL_SVD_REFERENCE_0P9V
|
||
|
|
* @retval State of bit (1 or 0).
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE uint32_t FL_SVD_IsEnabledReference(SVD_Type *SVDx, uint32_t ref)
|
||
|
|
{
|
||
|
|
return (uint32_t)(READ_BIT(SVDx->VSR, ((ref & 0x7) << 0x0U)) == ((ref & 0x7) << 0x0U));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief Disable SVD Reference
|
||
|
|
* @rmtoll VSR EN FL_SVD_DisableReference
|
||
|
|
* @param SVDx SVD instance
|
||
|
|
* @param ref This parameter can be one of the following values:
|
||
|
|
* @arg @ref FL_SVD_REFERENCE_1P0V
|
||
|
|
* @arg @ref FL_SVD_REFERENCE_0P95V
|
||
|
|
* @arg @ref FL_SVD_REFERENCE_0P9V
|
||
|
|
* @retval None
|
||
|
|
*/
|
||
|
|
__STATIC_INLINE void FL_SVD_DisableReference(SVD_Type *SVDx, uint32_t ref)
|
||
|
|
{
|
||
|
|
CLEAR_BIT(SVDx->VSR, ((ref & 0x7) << 0x0U));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @}
|
||
|
|
*/
|
||
|
|
|
||
|
|
/** @defgroup SVD_FL_EF_Init Initialization and de-initialization functions
|
||
|
|
* @{
|
||
|
|
*/
|
||
|
|
|
||
|
|
FL_ErrorStatus FL_SVD_DeInit(SVD_Type *SVDx);
|
||
|
|
FL_ErrorStatus FL_SVD_Init(SVD_Type *SVDx, FL_SVD_InitTypeDef *init);
|
||
|
|
void FL_SVD_StructInit(FL_SVD_InitTypeDef *init);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @}
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @}
|
||
|
|
*/
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @}
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#endif /* __FM33LG0XX_FL_SVD_H*/
|
||
|
|
|
||
|
|
/*************************Py_Code_Generator Version: 0.1-0.11-0.1 @ 2020-09-22*************************/
|
||
|
|
/*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/
|