/******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** | |
* File Name : stm32f10x_bkp.c | |
* Author : MCD Application Team | |
* Date First Issued : 09/29/2006 | |
* Description : This file provides all the BKP firmware functions. | |
******************************************************************************** | |
* History: | |
* 04/02/2007: V0.2 | |
* 02/05/2007: V0.1 | |
* 09/29/2006: V0.01 | |
******************************************************************************** | |
* THE PRESENT SOFTWARE 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 SOFTWARE 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) | |
/* --- RTCCR Register ---*/ | |
/* Alias word address of CCO bit */ | |
#define RTCCR_OFFSET (BKP_OFFSET + 0x2C) | |
#define CCO_BitNumber 0x07 | |
#define RTCCR_CCO_BB (PERIPH_BB_BASE + (RTCCR_OFFSET * 32) + (CCO_BitNumber * 4)) | |
/* --- 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) | |
/* 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(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(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(IS_FUNCTIONAL_STATE(NewState)); | |
*(vu32 *) CSR_TPIE_BB = (u32)NewState; | |
} | |
/******************************************************************************* | |
* Function Name : BKP_RTCCalibrationClockOutputCmd | |
* Description : Enables or disables the output of the Calibration Clock. | |
* Input : - NewState: new state of the Calibration Clock output. | |
* This parameter can be: ENABLE or DISABLE. | |
* Output : None | |
* Return : None | |
*******************************************************************************/ | |
void BKP_RTCCalibrationClockOutputCmd(FunctionalState NewState) | |
{ | |
/* Check the parameters */ | |
assert(IS_FUNCTIONAL_STATE(NewState)); | |
*(vu32 *) RTCCR_CCO_BB = (u32)NewState; | |
} | |
/******************************************************************************* | |
* 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(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, 10] | |
* - Data: data to write | |
* Output : None | |
* Return : None | |
*******************************************************************************/ | |
void BKP_WriteBackupRegister(u16 BKP_DR, u16 Data) | |
{ | |
/* Check the parameters */ | |
assert(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, 10] | |
* Output : None | |
* Return : The content of the specified Data Backup Register | |
*******************************************************************************/ | |
u16 BKP_ReadBackupRegister(u16 BKP_DR) | |
{ | |
/* Check the parameters */ | |
assert(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 2007 STMicroelectronics *****END OF FILE****/ |