mbed library sources modified for open wear
Dependents: openwear-lifelogger-example
Fork of mbed-src by
targets/cmsis/TARGET_STM/TARGET_NUCLEO_F103RB/stm32f10x_bkp.c
- Committer:
- mbed_official
- Date:
- 2014-02-03
- Revision:
- 84:f54042cbc282
- Parent:
- 70:c1fbde68b492
File content as of revision 84:f54042cbc282:
/** ****************************************************************************** * @file stm32f10x_bkp.c * @author MCD Application Team * @version V3.6.1 * @date 05-March-2012 * @brief This file provides all the BKP firmware functions. ******************************************************************************* * Copyright (c) 2014, STMicroelectronics * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * 3. Neither the name of STMicroelectronics nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************* */ /* Includes ------------------------------------------------------------------*/ #include "stm32f10x_bkp.h" #include "stm32f10x_rcc.h" /** @addtogroup STM32F10x_StdPeriph_Driver * @{ */ /** @defgroup BKP * @brief BKP driver modules * @{ */ /** @defgroup BKP_Private_TypesDefinitions * @{ */ /** * @} */ /** @defgroup BKP_Private_Defines * @{ */ /* ------------ BKP registers bit address in the alias region --------------- */ #define BKP_OFFSET (BKP_BASE - PERIPH_BASE) /* --- CR Register ----*/ /* Alias word address of TPAL bit */ #define CR_OFFSET (BKP_OFFSET + 0x30) #define TPAL_BitNumber 0x01 #define CR_TPAL_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (TPAL_BitNumber * 4)) /* Alias word address of TPE bit */ #define TPE_BitNumber 0x00 #define CR_TPE_BB (PERIPH_BB_BASE + (CR_OFFSET * 32) + (TPE_BitNumber * 4)) /* --- CSR Register ---*/ /* Alias word address of TPIE bit */ #define CSR_OFFSET (BKP_OFFSET + 0x34) #define TPIE_BitNumber 0x02 #define CSR_TPIE_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TPIE_BitNumber * 4)) /* Alias word address of TIF bit */ #define TIF_BitNumber 0x09 #define CSR_TIF_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TIF_BitNumber * 4)) /* Alias word address of TEF bit */ #define TEF_BitNumber 0x08 #define CSR_TEF_BB (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TEF_BitNumber * 4)) /* ---------------------- BKP registers bit mask ------------------------ */ /* RTCCR register bit mask */ #define RTCCR_CAL_MASK ((uint16_t)0xFF80) #define RTCCR_MASK ((uint16_t)0xFC7F) /** * @} */ /** @defgroup BKP_Private_Macros * @{ */ /** * @} */ /** @defgroup BKP_Private_Variables * @{ */ /** * @} */ /** @defgroup BKP_Private_FunctionPrototypes * @{ */ /** * @} */ /** @defgroup BKP_Private_Functions * @{ */ /** * @brief Deinitializes the BKP peripheral registers to their default reset values. * @param None * @retval None */ void BKP_DeInit(void) { RCC_BackupResetCmd(ENABLE); RCC_BackupResetCmd(DISABLE); } /** * @brief Configures the Tamper Pin active level. * @param BKP_TamperPinLevel: specifies the Tamper Pin active level. * This parameter can be one of the following values: * @arg BKP_TamperPinLevel_High: Tamper pin active on high level * @arg BKP_TamperPinLevel_Low: Tamper pin active on low level * @retval None */ void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel) { /* Check the parameters */ assert_param(IS_BKP_TAMPER_PIN_LEVEL(BKP_TamperPinLevel)); *(__IO uint32_t *) CR_TPAL_BB = BKP_TamperPinLevel; } /** * @brief Enables or disables the Tamper Pin activation. * @param NewState: new state of the Tamper Pin activation. * This parameter can be: ENABLE or DISABLE. * @retval None */ void BKP_TamperPinCmd(FunctionalState NewState) { /* Check the parameters */ assert_param(IS_FUNCTIONAL_STATE(NewState)); *(__IO uint32_t *) CR_TPE_BB = (uint32_t)NewState; } /** * @brief Enables or disables the Tamper Pin Interrupt. * @param NewState: new state of the Tamper Pin Interrupt. * This parameter can be: ENABLE or DISABLE. * @retval None */ void BKP_ITConfig(FunctionalState NewState) { /* Check the parameters */ assert_param(IS_FUNCTIONAL_STATE(NewState)); *(__IO uint32_t *) CSR_TPIE_BB = (uint32_t)NewState; } /** * @brief Select the RTC output source to output on the Tamper pin. * @param BKP_RTCOutputSource: specifies the RTC output source. * This parameter can be one of the following values: * @arg BKP_RTCOutputSource_None: no RTC output on the Tamper pin. * @arg BKP_RTCOutputSource_CalibClock: output the RTC clock with frequency * divided by 64 on the Tamper pin. * @arg BKP_RTCOutputSource_Alarm: output the RTC Alarm pulse signal on * the Tamper pin. * @arg BKP_RTCOutputSource_Second: output the RTC Second pulse signal on * the Tamper pin. * @retval None */ void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource) { uint16_t tmpreg = 0; /* Check the parameters */ assert_param(IS_BKP_RTC_OUTPUT_SOURCE(BKP_RTCOutputSource)); tmpreg = BKP->RTCCR; /* Clear CCO, ASOE and ASOS bits */ tmpreg &= RTCCR_MASK; /* Set CCO, ASOE and ASOS bits according to BKP_RTCOutputSource value */ tmpreg |= BKP_RTCOutputSource; /* Store the new value */ BKP->RTCCR = tmpreg; } /** * @brief Sets RTC Clock Calibration value. * @param CalibrationValue: specifies the RTC Clock Calibration value. * This parameter must be a number between 0 and 0x7F. * @retval None */ void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue) { uint16_t tmpreg = 0; /* Check the parameters */ assert_param(IS_BKP_CALIBRATION_VALUE(CalibrationValue)); tmpreg = BKP->RTCCR; /* Clear CAL[6:0] bits */ tmpreg &= RTCCR_CAL_MASK; /* Set CAL[6:0] bits according to CalibrationValue value */ tmpreg |= CalibrationValue; /* Store the new value */ BKP->RTCCR = tmpreg; } /** * @brief Writes user data to the specified Data Backup Register. * @param BKP_DR: specifies the Data Backup Register. * This parameter can be BKP_DRx where x:[1, 42] * @param Data: data to write * @retval None */ void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data) { __IO uint32_t tmp = 0; /* Check the parameters */ assert_param(IS_BKP_DR(BKP_DR)); tmp = (uint32_t)BKP_BASE; tmp += BKP_DR; *(__IO uint32_t *) tmp = Data; } /** * @brief Reads data from the specified Data Backup Register. * @param BKP_DR: specifies the Data Backup Register. * This parameter can be BKP_DRx where x:[1, 42] * @retval The content of the specified Data Backup Register */ uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR) { __IO uint32_t tmp = 0; /* Check the parameters */ assert_param(IS_BKP_DR(BKP_DR)); tmp = (uint32_t)BKP_BASE; tmp += BKP_DR; return (*(__IO uint16_t *) tmp); } /** * @brief Checks whether the Tamper Pin Event flag is set or not. * @param None * @retval The new state of the Tamper Pin Event flag (SET or RESET). */ FlagStatus BKP_GetFlagStatus(void) { return (FlagStatus)(*(__IO uint32_t *) CSR_TEF_BB); } /** * @brief Clears Tamper Pin Event pending flag. * @param None * @retval None */ void BKP_ClearFlag(void) { /* Set CTE bit to clear Tamper Pin Event flag */ BKP->CSR |= BKP_CSR_CTE; } /** * @brief Checks whether the Tamper Pin Interrupt has occurred or not. * @param None * @retval The new state of the Tamper Pin Interrupt (SET or RESET). */ ITStatus BKP_GetITStatus(void) { return (ITStatus)(*(__IO uint32_t *) CSR_TIF_BB); } /** * @brief Clears Tamper Pin Interrupt pending bit. * @param None * @retval None */ void BKP_ClearITPendingBit(void) { /* Set CTI bit to clear Tamper Pin Interrupt pending bit */ BKP->CSR |= BKP_CSR_CTI; } /** * @} */ /** * @} */ /** * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/