www.pudn.com > Micrium-ST-uCOS-II-LCD-STM32-SK.rar > stm32f10x_bkp.c


/******************** (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: 
* 05/21/2007: V0.3 
* 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****/