ald_bkpc.c 3.4 KB
Newer Older
W
wangyq2018 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
/**
  *********************************************************************************
  *
  * @file    ald_bkpc.c
  * @brief   BKPC module driver.
  *
  * @version V1.0
  * @date    15 Dec 2017
  * @author  AE Team
  * @note
  *
  * Copyright (C) Shanghai Eastsoft Microelectronics Co. Ltd. All rights reserved.
  *
  *********************************************************************************
  */

#include "ald_bkpc.h"
#include "ald_rtc.h"


/** @addtogroup ES32FXXX_ALD
  * @{
  */

/** @defgroup BKPC BKPC
  * @brief BKPC module driver
  * @{
  */
#ifdef ALD_BKPC

/** @defgroup BKPC_Public_Functions BKPC Public Functions
  * @{
  */

/** @addtogroup BKPC_Public_Functions_Group1 Peripheral Control functions
  * @brief Peripheral Control functions
  *
  * @verbatim
  ==============================================================================
              ##### Peripheral Control functions #####
  ==============================================================================
  [..]  This section provides functions allowing to:
43 44
    (+) ald_bkpc_ldo_config() API can configure LDO in backup field.
    (+) ald_bkpc_bor_config() API can configure BOR in backup field.
W
wangyq2018 已提交
45 46 47 48 49 50 51 52 53 54 55

    @endverbatim
  * @{
  */

/**
  * @brief  Configure ldo in backup field
  * @param  output: Output voltage select.
  * @param  state: DISABLE/ENABLE.
  * @retval None
  */
56
void ald_bkpc_ldo_config(bkpc_ldo_output_t output, type_func_t state)
W
wangyq2018 已提交
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
{
    assert_param(IS_BKPC_LDO_OUTPUT(output));
    assert_param(IS_FUNC_STATE(state));

    BKPC_UNLOCK();
    MODIFY_REG(BKPC->CR, BKPC_CR_MT_STDB_MSK, state << BKPC_CR_MT_STDB_POS);

    if (state)
        MODIFY_REG(BKPC->CR, BKPC_CR_LDO_VSEL_MSK, output << BKPC_CR_LDO_VSEL_POSS);

    BKPC_LOCK();
    return;
}

/**
  * @brief  Configure bor voltage in backup field
  * @param  vol: Voltage select.
  * @param  state: DISABLE/ENABLE.
  * @retval None
  */
77
void ald_bkpc_bor_config(bkpc_bor_vol_t vol, type_func_t state)
W
wangyq2018 已提交
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
{
    assert_param(IS_BKPC_BOR_VOL(vol));
    assert_param(IS_FUNC_STATE(state));

    BKPC_UNLOCK();
    MODIFY_REG(BKPC->PCR, BKPC_PCR_BOREN_MSK, state << BKPC_PCR_BOREN_POS);

    if (state)
        MODIFY_REG(BKPC->PCR, BKPC_PCR_BORS_MSK, vol << BKPC_PCR_BORS_POSS);

    BKPC_LOCK();
    return;


}
/**
  * @}
  */

/** @addtogroup BKPC_Public_Functions_Group2 IO operation functions
  * @brief IO operation functions
  *
  * @verbatim
  ==============================================================================
              ##### IO operation functions #####
  ==============================================================================
  [..]  This section provides functions allowing to:
105 106
    (+) ald_bkpc_write_ram() API can write data in backup ram.
    (+) ald_bkpc_read_ram() API can read data from backup ram.
W
wangyq2018 已提交
107 108 109 110 111 112 113 114 115 116 117

    @endverbatim
  * @{
  */

/**
  * @brief  Write data into backup ram.
  * @param  idx: Index of backup word.
  * @param  value: Value which will be written to backup ram.
  * @retval None
  */
118
void ald_bkpc_write_ram(uint8_t idx, uint32_t value)
W
wangyq2018 已提交
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
{
    assert_param(IS_BKPC_RAM_IDX(idx));

    RTC_UNLOCK();
    WRITE_REG(RTC->BKPR[idx], value);
    RTC_LOCK();

    return;
}

/**
  * @brief  Read data from backup ram.
  * @param  idx: Index of backup word.
  * @retval The data.
  */
134
uint32_t ald_bkpc_read_ram(uint8_t idx)
W
wangyq2018 已提交
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
{
    assert_param(IS_BKPC_RAM_IDX(idx));

    return READ_REG(RTC->BKPR[idx]);
}
/**
  * @}
  */

/**
  * @}
  */
#endif /* ALD_BKPC */
/**
  * @}
  */

/**
  * @}
  */