| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956 |
- /**
- *******************************************************************************************************
- * @file fm33lc0xx_fl_pmu.h
- * @author FMSH Application Team
- * @brief Head file of PMU FL Module
- *******************************************************************************************************
- * @attention
- *
- * Copyright (c) [2019] [Fudan Microelectronics]
- * THIS SOFTWARE is licensed under the Mulan PSL v1.
- * can use this software according to the terms and conditions of the Mulan PSL v1.
- * You may obtain a copy of Mulan PSL v1 at:
- * http://license.coscl.org.cn/MulanPSL
- * 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 v1 for more details.
- *
- *******************************************************************************************************
- */
- /* Define to prevent recursive inclusion---------------------------------------------------------------*/
- #ifndef __FM33LC0XX_FL_PMU_H
- #define __FM33LC0XX_FL_PMU_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Includes -------------------------------------------------------------------------------------------*/
- #include "fm33lc0xx_fl.h"
- /** @addtogroup FM33LC0XX_FL_Driver
- * @{
- */
- /** @defgroup PMU PMU
- * @brief PMU FL driver
- * @{
- */
- /* Exported types -------------------------------------------------------------------------------------*/
- /** @defgroup PMU_FL_ES_INIT PMU Exported Init structures
- * @{
- */
- /**
- * @brief PMU Init Sturcture definition
- */
- typedef struct
- {
- /*! 低功耗模式下内核电压降低与否 */
- FL_FunState coreVoltageScaling;
- /*! 睡眠模式配置 */
- uint32_t deepSleep;
- /*! 唤醒后的系统频率,仅对RCHF */
- uint32_t wakeupFrequency;
- /*! 芯片LDO是否进入低功耗 */
- uint32_t LDOLowPowerMode;
- /*! 额外唤醒延迟 */
- uint32_t wakeupDelay;
- } FL_PMU_SleepInitTypeDef;
- /**
- * @}
- */
- /* Exported constants ---------------------------------------------------------------------------------*/
- /** @defgroup PMU_FL_Exported_Constants PMU Exported Constants
- * @{
- */
- #define PMU_CR_LDO_LPM_Pos (18U)
- #define PMU_CR_LDO_LPM_Msk (0x3U << PMU_CR_LDO_LPM_Pos)
- #define PMU_CR_LDO_LPM PMU_CR_LDO_LPM_Msk
- #define PMU_CR_LDO15EN_Pos (17U)
- #define PMU_CR_LDO15EN_Msk (0x1U << PMU_CR_LDO15EN_Pos)
- #define PMU_CR_LDO15EN PMU_CR_LDO15EN_Msk
- #define PMU_CR_LDO15EN_B_Pos (16U)
- #define PMU_CR_LDO15EN_B_Msk (0x1U << PMU_CR_LDO15EN_B_Pos)
- #define PMU_CR_LDO15EN_B PMU_CR_LDO15EN_B_Msk
- #define PMU_CR_WKFSEL_Pos (10U)
- #define PMU_CR_WKFSEL_Msk (0x3U << PMU_CR_WKFSEL_Pos)
- #define PMU_CR_WKFSEL PMU_CR_WKFSEL_Msk
- #define PMU_CR_SLPDP_Pos (9U)
- #define PMU_CR_SLPDP_Msk (0x1U << PMU_CR_SLPDP_Pos)
- #define PMU_CR_SLPDP PMU_CR_SLPDP_Msk
- #define PMU_CR_CVS_Pos (8U)
- #define PMU_CR_CVS_Msk (0x1U << PMU_CR_CVS_Pos)
- #define PMU_CR_CVS PMU_CR_CVS_Msk
- #define PMU_CR_PMOD_Pos (0U)
- #define PMU_CR_PMOD_Msk (0x3U << PMU_CR_PMOD_Pos)
- #define PMU_CR_PMOD PMU_CR_PMOD_Msk
- #define PMU_WKTR_STPCLR_Pos (2U)
- #define PMU_WKTR_STPCLR_Msk (0x1U << PMU_WKTR_STPCLR_Pos)
- #define PMU_WKTR_STPCLR PMU_WKTR_STPCLR_Msk
- #define PMU_WKTR_T1A_Pos (0U)
- #define PMU_WKTR_T1A_Msk (0x3U << PMU_WKTR_T1A_Pos)
- #define PMU_WKTR_T1A PMU_WKTR_T1A_Msk
- #define PMU_WKFR_ADCWKF_Pos (31U)
- #define PMU_WKFR_ADCWKF_Msk (0x1U << PMU_WKFR_ADCWKF_Pos)
- #define PMU_WKFR_ADCWKF PMU_WKFR_ADCWKF_Msk
- #define PMU_WKFR_RTCWKF_Pos (28U)
- #define PMU_WKFR_RTCWKF_Msk (0x1U << PMU_WKFR_RTCWKF_Pos)
- #define PMU_WKFR_RTCWKF PMU_WKFR_RTCWKF_Msk
- #define PMU_WKFR_SVDWKF_Pos (27U)
- #define PMU_WKFR_SVDWKF_Msk (0x1U << PMU_WKFR_SVDWKF_Pos)
- #define PMU_WKFR_SVDWKF PMU_WKFR_SVDWKF_Msk
- #define PMU_WKFR_LFDETWKF_Pos (26U)
- #define PMU_WKFR_LFDETWKF_Msk (0x1U << PMU_WKFR_LFDETWKF_Pos)
- #define PMU_WKFR_LFDETWKF PMU_WKFR_LFDETWKF_Msk
- #define PMU_WKFR_VREFWKF_Pos (25U)
- #define PMU_WKFR_VREFWKF_Msk (0x1U << PMU_WKFR_VREFWKF_Pos)
- #define PMU_WKFR_VREFWKF PMU_WKFR_VREFWKF_Msk
- #define PMU_WKFR_IOWKF_Pos (24U)
- #define PMU_WKFR_IOWKF_Msk (0x1U << PMU_WKFR_IOWKF_Pos)
- #define PMU_WKFR_IOWKF PMU_WKFR_IOWKF_Msk
- #define PMU_WKFR_IICWKF_Pos (23U)
- #define PMU_WKFR_IICWKF_Msk (0x1U << PMU_WKFR_IICWKF_Pos)
- #define PMU_WKFR_IICWKF PMU_WKFR_IICWKF_Msk
- #define PMU_WKFR_LPU1WKF_Pos (21U)
- #define PMU_WKFR_LPU1WKF_Msk (0x1U << PMU_WKFR_LPU1WKF_Pos)
- #define PMU_WKFR_LPU1WKF PMU_WKFR_LPU1WKF_Msk
- #define PMU_WKFR_LPU0WKF_Pos (20U)
- #define PMU_WKFR_LPU0WKF_Msk (0x1U << PMU_WKFR_LPU0WKF_Pos)
- #define PMU_WKFR_LPU0WKF PMU_WKFR_LPU0WKF_Msk
- #define PMU_WKFR_UART1WKF_Pos (19U)
- #define PMU_WKFR_UART1WKF_Msk (0x1U << PMU_WKFR_UART1WKF_Pos)
- #define PMU_WKFR_UART1WKF PMU_WKFR_UART1WKF_Msk
- #define PMU_WKFR_UART0WKF_Pos (18U)
- #define PMU_WKFR_UART0WKF_Msk (0x1U << PMU_WKFR_UART0WKF_Pos)
- #define PMU_WKFR_UART0WKF PMU_WKFR_UART0WKF_Msk
- #define PMU_WKFR_OPA2WKF_Pos (17U)
- #define PMU_WKFR_OPA2WKF_Msk (0x1U << PMU_WKFR_OPA2WKF_Pos)
- #define PMU_WKFR_OPA2WKF PMU_WKFR_OPA2WKF_Msk
- #define PMU_WKFR_OPA1WKF_Pos (16U)
- #define PMU_WKFR_OPA1WKF_Msk (0x1U << PMU_WKFR_OPA1WKF_Pos)
- #define PMU_WKFR_OPA1WKF PMU_WKFR_OPA1WKF_Msk
- #define PMU_WKFR_LPTWKF_Pos (10U)
- #define PMU_WKFR_LPTWKF_Msk (0x1U << PMU_WKFR_LPTWKF_Pos)
- #define PMU_WKFR_LPTWKF PMU_WKFR_LPTWKF_Msk
- #define PMU_WKFR_BSTWKF_Pos (9U)
- #define PMU_WKFR_BSTWKF_Msk (0x1U << PMU_WKFR_BSTWKF_Pos)
- #define PMU_WKFR_BSTWKF PMU_WKFR_BSTWKF_Msk
- #define PMU_WKFR_DBGWKF_Pos (8U)
- #define PMU_WKFR_DBGWKF_Msk (0x1U << PMU_WKFR_DBGWKF_Pos)
- #define PMU_WKFR_DBGWKF PMU_WKFR_DBGWKF_Msk
- #define PMU_WKFR_WKPXF_Pos (0U)
- #define PMU_WKFR_WKPXF_Msk (0xffU << PMU_WKFR_WKPXF_Pos)
- #define PMU_WKFR_WKPXF PMU_WKFR_WKPXF_Msk
- #define PMU_IER_LPRUNEIE_Pos (3U)
- #define PMU_IER_LPRUNEIE_Msk (0x1U << PMU_IER_LPRUNEIE_Pos)
- #define PMU_IER_LPRUNEIE PMU_IER_LPRUNEIE_Msk
- #define PMU_IER_LPACTEIE_Pos (2U)
- #define PMU_IER_LPACTEIE_Msk (0x1U << PMU_IER_LPACTEIE_Pos)
- #define PMU_IER_LPACTEIE PMU_IER_LPACTEIE_Msk
- #define PMU_IER_SLPEIE_Pos (1U)
- #define PMU_IER_SLPEIE_Msk (0x1U << PMU_IER_SLPEIE_Pos)
- #define PMU_IER_SLPEIE PMU_IER_SLPEIE_Msk
- #define PMU_IER_RTCEIE_Pos (0U)
- #define PMU_IER_RTCEIE_Msk (0x1U << PMU_IER_RTCEIE_Pos)
- #define PMU_IER_RTCEIE PMU_IER_RTCEIE_Msk
- #define PMU_ISR_SLPUNEIE_Pos (3U)
- #define PMU_ISR_SLPUNEIE_Msk (0x1U << PMU_ISR_SLPUNEIE_Pos)
- #define PMU_ISR_SLPUNEIE PMU_ISR_SLPUNEIE_Msk
- #define PMU_ISR_LPACTEIF_Pos (2U)
- #define PMU_ISR_LPACTEIF_Msk (0x1U << PMU_ISR_LPACTEIF_Pos)
- #define PMU_ISR_LPACTEIF PMU_ISR_LPACTEIF_Msk
- #define PMU_ISR_SLPEIF_Pos (1U)
- #define PMU_ISR_SLPEIF_Msk (0x1U << PMU_ISR_SLPEIF_Pos)
- #define PMU_ISR_SLPEIF PMU_ISR_SLPEIF_Msk
- #define PMU_ISR_RTCEIF_Pos (0U)
- #define PMU_ISR_RTCEIF_Msk (0x1U << PMU_ISR_RTCEIF_Pos)
- #define PMU_ISR_RTCEIF PMU_ISR_RTCEIF_Msk
- #define FL_PMU_WKUP0PIN (0x1U << 0U)
- #define FL_PMU_WKUP1PIN (0x1U << 1U)
- #define FL_PMU_WKUP2PIN (0x1U << 2U)
- #define FL_PMU_WKUP3PIN (0x1U << 3U)
- #define FL_PMU_WKUP4PIN (0x1U << 4U)
- #define FL_PMU_WKUP5PIN (0x1U << 5U)
- #define FL_PMU_WKUP6PIN (0x1U << 6U)
- #define FL_PMU_WKUP7PIN (0x1U << 7U)
- #define FL_PMU_LDO_LPM_DISABLE (0x0U << PMU_CR_LDO_LPM_Pos)
- #define FL_PMU_LDO_LPM_ENABLE (0x2U << PMU_CR_LDO_LPM_Pos)
- #define FL_PMU_RCHF_WAKEUP_FREQ_8MHZ (0x0U << PMU_CR_WKFSEL_Pos)
- #define FL_PMU_RCHF_WAKEUP_FREQ_16MHZ (0x1U << PMU_CR_WKFSEL_Pos)
- #define FL_PMU_RCHF_WAKEUP_FREQ_24MHZ (0x2U << PMU_CR_WKFSEL_Pos)
- #define FL_PMU_SLEEP_MODE_DEEP (0x1U << PMU_CR_SLPDP_Pos)
- #define FL_PMU_SLEEP_MODE_NORMAL (0x0U << PMU_CR_SLPDP_Pos)
- #define FL_PMU_POWER_MODE_ACTIVE_OR_LPACTIVE (0x0U << PMU_CR_PMOD_Pos)
- #define FL_PMU_POWER_MODE_LPRUN_ONLY (0x1U << PMU_CR_PMOD_Pos)
- #define FL_PMU_POWER_MODE_SLEEP_OR_DEEPSLEEP (0x2U << PMU_CR_PMOD_Pos)
- #define FL_PMU_FLASH_STOP_CLEAR_MODE_ASYNCHRONOUS (0x0U << PMU_WKTR_STPCLR_Pos)
- #define FL_PMU_FLASH_STOP_CLEAR_MODE_SYNCHRONOUS (0x1U << PMU_WKTR_STPCLR_Pos)
- #define FL_PMU_WAKEUP_DELAY_0US (0x0U << PMU_WKTR_T1A_Pos)
- #define FL_PMU_WAKEUP_DELAY_2US (0x1U << PMU_WKTR_T1A_Pos)
- #define FL_PMU_WAKEUP_DELAY_4US (0x2U << PMU_WKTR_T1A_Pos)
- #define FL_PMU_WAKEUP_DELAY_8US (0x3U << PMU_WKTR_T1A_Pos)
- /**
- * @}
- */
- /* Exported functions ---------------------------------------------------------------------------------*/
- /** @defgroup PMU_FL_Exported_Functions PMU Exported Functions
- * @{
- */
- /**
- * @brief Set LDO Low Power Mode
- * @rmtoll CR LDO_LPM FL_PMU_SetLDOLowPowerMode
- * @param PMUx PMU instance
- * @param mode This parameter can be one of the following values:
- * @arg @ref FL_PMU_LDO_LPM_DISABLE
- * @arg @ref FL_PMU_LDO_LPM_ENABLE
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_SetLDOLowPowerMode(PMU_Type *PMUx, uint32_t mode)
- {
- MODIFY_REG(PMUx->CR, PMU_CR_LDO_LPM_Msk, mode);
- }
- /**
- * @brief Get LDO Low Power Mode Setting
- * @rmtoll CR LDO_LPM FL_PMU_GetLDOLowPowerMode
- * @param PMUx PMU instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_PMU_LDO_LPM_DISABLE
- * @arg @ref FL_PMU_LDO_LPM_ENABLE
- */
- __STATIC_INLINE uint32_t FL_PMU_GetLDOLowPowerMode(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_LDO_LPM_Msk));
- }
- /**
- * @brief Get LDO15 Enable Status
- * @rmtoll CR LDO15EN FL_PMU_GetLDO15Status
- * @param PMUx PMU instance
- * @retval Returned value can be one of the following values:
- */
- __STATIC_INLINE uint32_t FL_PMU_GetLDO15Status(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_LDO15EN_Msk));
- }
- /**
- * @brief Get LDO15 Inverse check bit
- * @rmtoll CR LDO15EN_B FL_PMU_GetLDO15StatusInvert
- * @param PMUx PMU instance
- * @retval Returned value can be one of the following values:
- */
- __STATIC_INLINE uint32_t FL_PMU_GetLDO15StatusInvert(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_LDO15EN_B_Msk));
- }
- /**
- * @brief Set RCHF Frequency After Wakeup
- * @rmtoll CR WKFSEL FL_PMU_SetRCHFWakeupFrequency
- * @param PMUx PMU instance
- * @param freq This parameter can be one of the following values:
- * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_8MHZ
- * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_16MHZ
- * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_24MHZ
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_SetRCHFWakeupFrequency(PMU_Type *PMUx, uint32_t freq)
- {
- MODIFY_REG(PMUx->CR, PMU_CR_WKFSEL_Msk, freq);
- }
- /**
- * @brief Get RCHF Frequency After Wakeup Setting
- * @rmtoll CR WKFSEL FL_PMU_GetRCHFWakeupFrequency
- * @param PMUx PMU instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_8MHZ
- * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_16MHZ
- * @arg @ref FL_PMU_RCHF_WAKEUP_FREQ_24MHZ
- */
- __STATIC_INLINE uint32_t FL_PMU_GetRCHFWakeupFrequency(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_WKFSEL_Msk));
- }
- /**
- * @brief Set Sleep Mode
- * @rmtoll CR SLPDP FL_PMU_SetSleepMode
- * @param PMUx PMU instance
- * @param mode This parameter can be one of the following values:
- * @arg @ref FL_PMU_SLEEP_MODE_DEEP
- * @arg @ref FL_PMU_SLEEP_MODE_NORMAL
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_SetSleepMode(PMU_Type *PMUx, uint32_t mode)
- {
- MODIFY_REG(PMUx->CR, PMU_CR_SLPDP_Msk, mode);
- }
- /**
- * @brief Get Sleep Mode Setting
- * @rmtoll CR SLPDP FL_PMU_GetSleepMode
- * @param PMUx PMU instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_PMU_SLEEP_MODE_DEEP
- * @arg @ref FL_PMU_SLEEP_MODE_NORMAL
- */
- __STATIC_INLINE uint32_t FL_PMU_GetSleepMode(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_SLPDP_Msk));
- }
- /**
- * @brief Enable Core Voltage Scaling Under Low Power Mode
- * @rmtoll CR CVS FL_PMU_EnableCoreVoltageScaling
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_EnableCoreVoltageScaling(PMU_Type *PMUx)
- {
- SET_BIT(PMUx->CR, PMU_CR_CVS_Msk);
- }
- /**
- * @brief Get Core Voltage Scaling Under Low Power Mode Enable Status
- * @rmtoll CR CVS FL_PMU_IsEnabledCoreVoltageScaling
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsEnabledCoreVoltageScaling(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_CVS_Msk) == PMU_CR_CVS_Msk);
- }
- /**
- * @brief Disable Core Voltage Scaling Under Low Power Mode
- * @rmtoll CR CVS FL_PMU_DisableCoreVoltageScaling
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_DisableCoreVoltageScaling(PMU_Type *PMUx)
- {
- CLEAR_BIT(PMUx->CR, PMU_CR_CVS_Msk);
- }
- /**
- * @brief Set Low Power Mode
- * @rmtoll CR PMOD FL_PMU_SetLowPowerMode
- * @param PMUx PMU instance
- * @param mode This parameter can be one of the following values:
- * @arg @ref FL_PMU_POWER_MODE_ACTIVE_OR_LPACTIVE
- * @arg @ref FL_PMU_POWER_MODE_LPRUN_ONLY
- * @arg @ref FL_PMU_POWER_MODE_SLEEP_OR_DEEPSLEEP
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_SetLowPowerMode(PMU_Type *PMUx, uint32_t mode)
- {
- MODIFY_REG(PMUx->CR, PMU_CR_PMOD_Msk, mode);
- }
- /**
- * @brief Get Low Power Mode Setting
- * @rmtoll CR PMOD FL_PMU_GetLowPowerMode
- * @param PMUx PMU instance
- * @retval Returned value can be one of the following values:
- */
- __STATIC_INLINE uint32_t FL_PMU_GetLowPowerMode(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->CR, PMU_CR_PMOD_Msk));
- }
- /**
- * @brief Set Flash Stop Signal Clear Way
- * @rmtoll WKTR STPCLR FL_PMU_SetFlashStopSignalClearMode
- * @param PMUx PMU instance
- * @param config This parameter can be one of the following values:
- * @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_ASYNCHRONOUS
- * @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_SYNCHRONOUS
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_SetFlashStopSignalClearMode(PMU_Type *PMUx, uint32_t config)
- {
- MODIFY_REG(PMUx->WKTR, PMU_WKTR_STPCLR_Msk, config);
- }
- /**
- * @brief Get Flash Stop Signal Clear Way Setting
- * @rmtoll WKTR STPCLR FL_PMU_GetFlashStopSignalClearMode
- * @param PMUx PMU instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_ASYNCHRONOUS
- * @arg @ref FL_PMU_FLASH_STOP_CLEAR_MODE_SYNCHRONOUS
- */
- __STATIC_INLINE uint32_t FL_PMU_GetFlashStopSignalClearMode(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKTR, PMU_WKTR_STPCLR_Msk));
- }
- /**
- * @brief Set Extra Wakeup Delay Under Sleep/DeepSleep Mode
- * @rmtoll WKTR T1A FL_PMU_SetWakeupDelay
- * @param PMUx PMU instance
- * @param time This parameter can be one of the following values:
- * @arg @ref FL_PMU_WAKEUP_DELAY_0US
- * @arg @ref FL_PMU_WAKEUP_DELAY_2US
- * @arg @ref FL_PMU_WAKEUP_DELAY_4US
- * @arg @ref FL_PMU_WAKEUP_DELAY_8US
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_SetWakeupDelay(PMU_Type *PMUx, uint32_t time)
- {
- MODIFY_REG(PMUx->WKTR, PMU_WKTR_T1A_Msk, time);
- }
- /**
- * @brief Get Extra Wakeup Delay Under Sleep/DeepSleep Mode Setting
- * @rmtoll WKTR T1A FL_PMU_GetWakeupDelay
- * @param PMUx PMU instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_PMU_WAKEUP_DELAY_0US
- * @arg @ref FL_PMU_WAKEUP_DELAY_2US
- * @arg @ref FL_PMU_WAKEUP_DELAY_4US
- * @arg @ref FL_PMU_WAKEUP_DELAY_8US
- */
- __STATIC_INLINE uint32_t FL_PMU_GetWakeupDelay(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKTR, PMU_WKTR_T1A_Msk));
- }
- /**
- * @brief Get ADC interrupt wakeup flag
- * @rmtoll WKFR ADCWKF FL_PMU_IsActiveFlag_WakeupADC
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupADC(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_ADCWKF_Msk) == (PMU_WKFR_ADCWKF_Msk));
- }
- /**
- * @brief Get RTC interrupt wakeup flag
- * @rmtoll WKFR RTCWKF FL_PMU_IsActiveFlag_WakeupRTC
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupRTC(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_RTCWKF_Msk) == (PMU_WKFR_RTCWKF_Msk));
- }
- /**
- * @brief Get SVD interrupt wakeup flag
- * @rmtoll WKFR SVDWKF FL_PMU_IsActiveFlag_WakeupSVD
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupSVD(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_SVDWKF_Msk) == (PMU_WKFR_SVDWKF_Msk));
- }
- /**
- * @brief Get LFDET interrupt wakeup flag
- * @rmtoll WKFR LFDETWKF FL_PMU_IsActiveFlag_WakeupLFDET
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLFDET(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LFDETWKF_Msk) == (PMU_WKFR_LFDETWKF_Msk));
- }
- /**
- * @brief Get VREF interrupt wakeup flag
- * @rmtoll WKFR VREFWKF FL_PMU_IsActiveFlag_WakeupVREF
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupVREF(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_VREFWKF_Msk) == (PMU_WKFR_VREFWKF_Msk));
- }
- /**
- * @brief Get IO interrupt wakeup flag
- * @rmtoll WKFR IOWKF FL_PMU_IsActiveFlag_WakeupEXTI
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupEXTI(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_IOWKF_Msk) == (PMU_WKFR_IOWKF_Msk));
- }
- /**
- * @brief Get I2C interrupt wakeup flag
- * @rmtoll WKFR IICWKF FL_PMU_IsActiveFlag_WakeupI2C
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupI2C(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_IICWKF_Msk) == (PMU_WKFR_IICWKF_Msk));
- }
- /**
- * @brief Get LPUART1 interrupt wakeup flag
- * @rmtoll WKFR LPU1WKF FL_PMU_IsActiveFlag_WakeupLPUART1
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPUART1(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPU1WKF_Msk) == (PMU_WKFR_LPU1WKF_Msk));
- }
- /**
- * @brief Get LPUART0 interrupt wakeup flag
- * @rmtoll WKFR LPU0WKF FL_PMU_IsActiveFlag_WakeupLPUART0
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPUART0(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPU0WKF_Msk) == (PMU_WKFR_LPU0WKF_Msk));
- }
- /**
- * @brief Get UART1 interrupt wakeup flag
- * @rmtoll WKFR UART1WKF FL_PMU_IsActiveFlag_WakeupUART1
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupUART1(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_UART1WKF_Msk) == (PMU_WKFR_UART1WKF_Msk));
- }
- /**
- * @brief Get UART0 interrupt wakeup flag
- * @rmtoll WKFR UART0WKF FL_PMU_IsActiveFlag_WakeupUART0
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupUART0(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_UART0WKF_Msk) == (PMU_WKFR_UART0WKF_Msk));
- }
- /**
- * @brief Get COMP2 interrrupt wakeup flag
- * @rmtoll WKFR OPA2WKF FL_PMU_IsActiveFlag_WakeupCOMP2
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupCOMP2(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_OPA2WKF_Msk) == (PMU_WKFR_OPA2WKF_Msk));
- }
- /**
- * @brief Get COMP1 interrrupt wakeup flag
- * @rmtoll WKFR OPA1WKF FL_PMU_IsActiveFlag_WakeupCOMP1
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupCOMP1(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_OPA1WKF_Msk) == (PMU_WKFR_OPA1WKF_Msk));
- }
- /**
- * @brief Get LPTIM32 interrupt wakeup flag
- * @rmtoll WKFR LPTWKF FL_PMU_IsActiveFlag_WakeupLPTIM32
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupLPTIM32(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_LPTWKF_Msk) == (PMU_WKFR_LPTWKF_Msk));
- }
- /**
- * @brief Get BSTIM32 interrupt wakeup flag
- * @rmtoll WKFR BSTWKF FL_PMU_IsActiveFlag_WakeupBSTIM32
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupBSTIM32(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_BSTWKF_Msk) == (PMU_WKFR_BSTWKF_Msk));
- }
- /**
- * @brief Get CPU Debugger wakeup flag
- * @rmtoll WKFR DBGWKF FL_PMU_IsActiveFlag_WakeupDBG
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupDBG(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, PMU_WKFR_DBGWKF_Msk) == (PMU_WKFR_DBGWKF_Msk));
- }
- /**
- * @brief Clear CPU Debugger wakeup flag
- * @rmtoll WKFR DBGWKF FL_PMU_ClearFlag_WakeupDBG
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_ClearFlag_WakeupDBG(PMU_Type *PMUx)
- {
- WRITE_REG(PMUx->WKFR, PMU_WKFR_DBGWKF_Msk);
- }
- /**
- * @brief Get pinx wakeup flag
- * @rmtoll WKFR WKPXF FL_PMU_IsActiveFlag_WakeupPIN
- * @param PMUx PMU instance
- * @param Pin This parameter can be one of the following values:
- * @arg @ref FL_PMU_WKUP0PIN
- * @arg @ref FL_PMU_WKUP1PIN
- * @arg @ref FL_PMU_WKUP2PIN
- * @arg @ref FL_PMU_WKUP3PIN
- * @arg @ref FL_PMU_WKUP4PIN
- * @arg @ref FL_PMU_WKUP5PIN
- * @arg @ref FL_PMU_WKUP6PIN
- * @arg @ref FL_PMU_WKUP7PIN
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_WakeupPIN(PMU_Type *PMUx, uint32_t Pin)
- {
- return (uint32_t)(READ_BIT(PMUx->WKFR, ((Pin & 0xff) << 0x0U)) == ((Pin & 0xff) << 0x0U));
- }
- /**
- * @brief Clear pinx wakeup flag
- * @rmtoll WKFR WKPXF FL_PMU_ClearFlag_WakeupPIN
- * @param PMUx PMU instance
- * @param Pin This parameter can be one of the following values:
- * @arg @ref FL_PMU_WKUP0PIN
- * @arg @ref FL_PMU_WKUP1PIN
- * @arg @ref FL_PMU_WKUP2PIN
- * @arg @ref FL_PMU_WKUP3PIN
- * @arg @ref FL_PMU_WKUP4PIN
- * @arg @ref FL_PMU_WKUP5PIN
- * @arg @ref FL_PMU_WKUP6PIN
- * @arg @ref FL_PMU_WKUP7PIN
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_ClearFlag_WakeupPIN(PMU_Type *PMUx, uint32_t Pin)
- {
- WRITE_REG(PMUx->WKFR, ((Pin & 0xff) << 0x0U));
- }
- /**
- * @brief LPREIE error interrupt enable
- * @rmtoll IER LPRUNEIE FL_PMU_EnableIT_LPRunError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_EnableIT_LPRunError(PMU_Type *PMUx)
- {
- SET_BIT(PMUx->IER, PMU_IER_LPRUNEIE_Msk);
- }
- /**
- * @brief Get LPREIE error interrupt enable status
- * @rmtoll IER LPRUNEIE FL_PMU_IsEnabledIT_LPRunError
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_LPRunError(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_LPRUNEIE_Msk) == PMU_IER_LPRUNEIE_Msk);
- }
- /**
- * @brief LPREIE error interrupt disable
- * @rmtoll IER LPRUNEIE FL_PMU_DisableIT_LPRunError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_DisableIT_LPRunError(PMU_Type *PMUx)
- {
- CLEAR_BIT(PMUx->IER, PMU_IER_LPRUNEIE_Msk);
- }
- /**
- * @brief LPActive error interrupt enable
- * @rmtoll IER LPACTEIE FL_PMU_EnableIT_LPActiveError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_EnableIT_LPActiveError(PMU_Type *PMUx)
- {
- SET_BIT(PMUx->IER, PMU_IER_LPACTEIE_Msk);
- }
- /**
- * @brief Get LPActive error interrupt enable status
- * @rmtoll IER LPACTEIE FL_PMU_IsEnabledIT_LPActiveError
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_LPActiveError(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_LPACTEIE_Msk) == PMU_IER_LPACTEIE_Msk);
- }
- /**
- * @brief LPActive error interrupt disable
- * @rmtoll IER LPACTEIE FL_PMU_DisableIT_LPActiveError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_DisableIT_LPActiveError(PMU_Type *PMUx)
- {
- CLEAR_BIT(PMUx->IER, PMU_IER_LPACTEIE_Msk);
- }
- /**
- * @brief Sleep error interrupt enable
- * @rmtoll IER SLPEIE FL_PMU_EnableIT_SleepError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_EnableIT_SleepError(PMU_Type *PMUx)
- {
- SET_BIT(PMUx->IER, PMU_IER_SLPEIE_Msk);
- }
- /**
- * @brief Get sleep error interrupt enable status
- * @rmtoll IER SLPEIE FL_PMU_IsEnabledIT_SleepError
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_SleepError(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_SLPEIE_Msk) == PMU_IER_SLPEIE_Msk);
- }
- /**
- * @brief sleep error interrupt disable
- * @rmtoll IER SLPEIE FL_PMU_DisableIT_SleepError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_DisableIT_SleepError(PMU_Type *PMUx)
- {
- CLEAR_BIT(PMUx->IER, PMU_IER_SLPEIE_Msk);
- }
- /**
- * @brief RTCBKP error interrupt enable
- * @rmtoll IER RTCEIE FL_PMU_EnableIT_RTCBKPError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_EnableIT_RTCBKPError(PMU_Type *PMUx)
- {
- SET_BIT(PMUx->IER, PMU_IER_RTCEIE_Msk);
- }
- /**
- * @brief Get RTCBKP error interrupt enable status
- * @rmtoll IER RTCEIE FL_PMU_IsEnabledIT_RTCBKPError
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsEnabledIT_RTCBKPError(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->IER, PMU_IER_RTCEIE_Msk) == PMU_IER_RTCEIE_Msk);
- }
- /**
- * @brief Sleep error interrupt disable
- * @rmtoll IER RTCEIE FL_PMU_DisableIT_RTCBKPError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_DisableIT_RTCBKPError(PMU_Type *PMUx)
- {
- CLEAR_BIT(PMUx->IER, PMU_IER_RTCEIE_Msk);
- }
- /**
- * @brief Get LPRUN error interrupt flag
- * @rmtoll ISR SLPUNEIE FL_PMU_IsActiveFlag_LPRunError
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_LPRunError(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_SLPUNEIE_Msk) == (PMU_ISR_SLPUNEIE_Msk));
- }
- /**
- * @brief Clear LPRUN error interrupt flag
- * @rmtoll ISR SLPUNEIE FL_PMU_ClearFlag_LPRunError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_ClearFlag_LPRunError(PMU_Type *PMUx)
- {
- WRITE_REG(PMUx->ISR, PMU_ISR_SLPUNEIE_Msk);
- }
- /**
- * @brief Get LPACTIF error interrupt flag
- * @rmtoll ISR LPACTEIF FL_PMU_IsActiveFlag_LPActiveError
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_LPActiveError(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_LPACTEIF_Msk) == (PMU_ISR_LPACTEIF_Msk));
- }
- /**
- * @brief Clear LPACTIF error interrupt flag
- * @rmtoll ISR LPACTEIF FL_PMU_ClearFlag_LPActiveError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_ClearFlag_LPActiveError(PMU_Type *PMUx)
- {
- WRITE_REG(PMUx->ISR, PMU_ISR_LPACTEIF_Msk);
- }
- /**
- * @brief Get SLEEP error interrupt flag
- * @rmtoll ISR SLPEIF FL_PMU_IsActiveFlag_SleepError
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_SleepError(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_SLPEIF_Msk) == (PMU_ISR_SLPEIF_Msk));
- }
- /**
- * @brief Clear SLEEP error interrupt flag
- * @rmtoll ISR SLPEIF FL_PMU_ClearFlag_SleepError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_ClearFlag_SleepError(PMU_Type *PMUx)
- {
- WRITE_REG(PMUx->ISR, PMU_ISR_SLPEIF_Msk);
- }
- /**
- * @brief Get RTCBKP error interrupt flag
- * @rmtoll ISR RTCEIF FL_PMU_IsActiveFlag_RTCError
- * @param PMUx PMU instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_PMU_IsActiveFlag_RTCError(PMU_Type *PMUx)
- {
- return (uint32_t)(READ_BIT(PMUx->ISR, PMU_ISR_RTCEIF_Msk) == (PMU_ISR_RTCEIF_Msk));
- }
- /**
- * @brief Clear RTCBKP error interrupt flag
- * @rmtoll ISR RTCEIF FL_PMU_ClearFlag_RTCError
- * @param PMUx PMU instance
- * @retval None
- */
- __STATIC_INLINE void FL_PMU_ClearFlag_RTCError(PMU_Type *PMUx)
- {
- WRITE_REG(PMUx->ISR, PMU_ISR_RTCEIF_Msk);
- }
- /**
- * @}
- */
- /** @defgroup PMU_FL_EF_Init Initialization and de-initialization functions
- * @{
- */
- FL_ErrorStatus FL_PMU_Sleep_DeInit(PMU_Type *PMUx);
- FL_ErrorStatus FL_PMU_Sleep_Init(PMU_Type *PMUx, FL_PMU_SleepInitTypeDef *LPM_InitStruct);
- void FL_PMU_StructInit(FL_PMU_SleepInitTypeDef *LPM_InitStruct);
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __FM33LC0XX_FL_PMU_H*/
- /*************************Py_Code_Generator Version: 0.1-0.11-0.2 @ 2020-09-23*************************/
- /*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/
|