- /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
- * File Name : stm32f10x_bkp.c
- * Author : MCD Application Team
- * Version : V2.0.2
- * Date : 07/11/2008
- * Description : This file provides all the BKP firmware functions.
- ********************************************************************************
- * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
- * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
- * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
- * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
- * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
- * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
- *******************************************************************************/
- /* Includes ------------------------------------------------------------------*/
- #include "stm32f10x_bkp.h"
- #include "stm32f10x_rcc.h"
- /* Private typedef -----------------------------------------------------------*/
- /* Private define ------------------------------------------------------------*/
- /* ------------ 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 ((u16)0xFF80)
- #define RTCCR_Mask ((u16)0xFC7F)
- /* CSR register bit mask */
- #define CSR_CTE_Set ((u16)0x0001)
- #define CSR_CTI_Set ((u16)0x0002)
- /* Private macro -------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- /* Private function prototypes -----------------------------------------------*/
- /* Private functions ---------------------------------------------------------*/
- /*******************************************************************************
- * Function Name : BKP_DeInit
- * Description : Deinitializes the BKP peripheral registers to their default
- * reset values.
- * Input : None
- * Output : None
- * Return : None
- *******************************************************************************/
- void BKP_DeInit(void)
- {
- RCC_BackupResetCmd(ENABLE);
- RCC_BackupResetCmd(DISABLE);
- }
- /*******************************************************************************
- * Function Name : BKP_TamperPinLevelConfig
- * Description : Configures the Tamper Pin active level.
- * Input : - BKP_TamperPinLevel: specifies the Tamper Pin active level.
- * This parameter can be one of the following values:
- * - BKP_TamperPinLevel_High: Tamper pin active on high level
- * - BKP_TamperPinLevel_Low: Tamper pin active on low level
- * Output : None
- * Return : None
- *******************************************************************************/
- void BKP_TamperPinLevelConfig(u16 BKP_TamperPinLevel)
- {
- /* Check the parameters */
- assert_param(IS_BKP_TAMPER_PIN_LEVEL(BKP_TamperPinLevel));
- *(vu32 *) CR_TPAL_BB = BKP_TamperPinLevel;
- }
- /*******************************************************************************
- * Function Name : BKP_TamperPinCmd
- * Description : Enables or disables the Tamper Pin activation.
- * Input : - NewState: new state of the Tamper Pin activation.
- * This parameter can be: ENABLE or DISABLE.
- * Output : None
- * Return : None
- *******************************************************************************/
- void BKP_TamperPinCmd(FunctionalState NewState)
- {
- /* Check the parameters */
- assert_param(IS_FUNCTIONAL_STATE(NewState));
- *(vu32 *) CR_TPE_BB = (u32)NewState;
- }
- /*******************************************************************************
- * Function Name : BKP_ITConfig
- * Description : Enables or disables the Tamper Pin Interrupt.
- * Input : - NewState: new state of the Tamper Pin Interrupt.
- * This parameter can be: ENABLE or DISABLE.
- * Output : None
- * Return : None
- *******************************************************************************/
- void BKP_ITConfig(FunctionalState NewState)
- {
- /* Check the parameters */
- assert_param(IS_FUNCTIONAL_STATE(NewState));
- *(vu32 *) CSR_TPIE_BB = (u32)NewState;
- }
- /*******************************************************************************
- * Function Name : BKP_RTCOutputConfig
- * Description : Select the RTC output source to output on the Tamper pin.
- * Input : - BKP_RTCOutputSource: specifies the RTC output source.
- * This parameter can be one of the following values:
- * - BKP_RTCOutputSource_None: no RTC output on the Tamper pin.
- * - BKP_RTCOutputSource_CalibClock: output the RTC clock
- * with frequency divided by 64 on the Tamper pin.
- * - BKP_RTCOutputSource_Alarm: output the RTC Alarm pulse
- * signal on the Tamper pin.
- * - BKP_RTCOutputSource_Second: output the RTC Second pulse
- * signal on the Tamper pin.
- * Output : None
- * Return : None
- *******************************************************************************/
- void BKP_RTCOutputConfig(u16 BKP_RTCOutputSource)
- {
- u16 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;
- }
- /*******************************************************************************
- * Function Name : BKP_SetRTCCalibrationValue
- * Description : Sets RTC Clock Calibration value.
- * Input : - CalibrationValue: specifies the RTC Clock Calibration value.
- * This parameter must be a number between 0 and 0x7F.
- * Output : None
- * Return : None
- *******************************************************************************/
- void BKP_SetRTCCalibrationValue(u8 CalibrationValue)
- {
- u16 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;
- }
- /*******************************************************************************
- * Function Name : BKP_WriteBackupRegister
- * Description : Writes user data to the specified Data Backup Register.
- * Input : - BKP_DR: specifies the Data Backup Register.
- * This parameter can be BKP_DRx where x:[1, 42]
- * - Data: data to write
- * Output : None
- * Return : None
- *******************************************************************************/
- void BKP_WriteBackupRegister(u16 BKP_DR, u16 Data)
- {
- /* Check the parameters */
- assert_param(IS_BKP_DR(BKP_DR));
- *(vu16 *) (BKP_BASE + BKP_DR) = Data;
- }
- /*******************************************************************************
- * Function Name : BKP_ReadBackupRegister
- * Description : Reads data from the specified Data Backup Register.
- * Input : - BKP_DR: specifies the Data Backup Register.
- * This parameter can be BKP_DRx where x:[1, 42]
- * Output : None
- * Return : The content of the specified Data Backup Register
- *******************************************************************************/
- u16 BKP_ReadBackupRegister(u16 BKP_DR)
- {
- /* Check the parameters */
- assert_param(IS_BKP_DR(BKP_DR));
- return (*(vu16 *) (BKP_BASE + BKP_DR));
- }
- /*******************************************************************************
- * Function Name : BKP_GetFlagStatus
- * Description : Checks whether the Tamper Pin Event flag is set or not.
- * Input : None
- * Output : None
- * Return : The new state of the Tamper Pin Event flag (SET or RESET).
- *******************************************************************************/
- FlagStatus BKP_GetFlagStatus(void)
- {
- return (FlagStatus)(*(vu32 *) CSR_TEF_BB);
- }
- /*******************************************************************************
- * Function Name : BKP_ClearFlag
- * Description : Clears Tamper Pin Event pending flag.
- * Input : None
- * Output : None
- * Return : None
- *******************************************************************************/
- void BKP_ClearFlag(void)
- {
- /* Set CTE bit to clear Tamper Pin Event flag */
- BKP->CSR |= CSR_CTE_Set;
- }
- /*******************************************************************************
- * Function Name : BKP_GetITStatus
- * Description : Checks whether the Tamper Pin Interrupt has occurred or not.
- * Input : None
- * Output : None
- * Return : The new state of the Tamper Pin Interrupt (SET or RESET).
- *******************************************************************************/
- ITStatus BKP_GetITStatus(void)
- {
- return (ITStatus)(*(vu32 *) CSR_TIF_BB);
- }
- /*******************************************************************************
- * Function Name : BKP_ClearITPendingBit
- * Description : Clears Tamper Pin Interrupt pending bit.
- * Input : None
- * Output : None
- * Return : None
- *******************************************************************************/
- void BKP_ClearITPendingBit(void)
- {
- /* Set CTI bit to clear Tamper Pin Interrupt pending bit */
- BKP->CSR |= CSR_CTI_Set;
- }
- /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/