]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_STM32F103_Keil/STM32F10xFWLib/src/stm32f10x_bkp.c
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_STM32F103_Keil / STM32F10xFWLib / src / stm32f10x_bkp.c
1 /******************** (C) COPYRIGHT 2007 STMicroelectronics ********************\r
2 * File Name          : stm32f10x_bkp.c\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 09/29/2006\r
5 * Description        : This file provides all the BKP firmware functions.\r
6 ********************************************************************************\r
7 * History:\r
8 * 04/02/2007: V0.2\r
9 * 02/05/2007: V0.1\r
10 * 09/29/2006: V0.01\r
11 ********************************************************************************\r
12 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
14 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
15 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
16 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
17 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18 *******************************************************************************/\r
19 \r
20 /* Includes ------------------------------------------------------------------*/\r
21 #include "stm32f10x_bkp.h"\r
22 #include "stm32f10x_rcc.h"\r
23 \r
24 /* Private typedef -----------------------------------------------------------*/\r
25 /* Private define ------------------------------------------------------------*/\r
26 /* ------------ BKP registers bit address in the alias region ----------- */\r
27 #define BKP_OFFSET        (BKP_BASE - PERIPH_BASE)\r
28 \r
29 /* --- RTCCR Register ---*/\r
30 /* Alias word address of CCO bit */\r
31 #define RTCCR_OFFSET      (BKP_OFFSET + 0x2C)\r
32 #define CCO_BitNumber     0x07\r
33 #define RTCCR_CCO_BB      (PERIPH_BB_BASE + (RTCCR_OFFSET * 32) + (CCO_BitNumber * 4))\r
34 \r
35 /* --- CR Register ---*/\r
36 /* Alias word address of TPAL bit */\r
37 #define CR_OFFSET         (BKP_OFFSET + 0x30)\r
38 #define TPAL_BitNumber    0x01\r
39 #define CR_TPAL_BB        (PERIPH_BB_BASE + (CR_OFFSET * 32) + (TPAL_BitNumber * 4))\r
40 \r
41 /* Alias word address of TPE bit */\r
42 #define TPE_BitNumber     0x00\r
43 #define CR_TPE_BB         (PERIPH_BB_BASE + (CR_OFFSET * 32) + (TPE_BitNumber * 4))\r
44 \r
45 /* --- CSR Register ---*/\r
46 /* Alias word address of TPIE bit */\r
47 #define CSR_OFFSET        (BKP_OFFSET + 0x34)\r
48 #define TPIE_BitNumber    0x02\r
49 #define CSR_TPIE_BB       (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TPIE_BitNumber * 4))\r
50 \r
51 /* Alias word address of TIF bit */\r
52 #define TIF_BitNumber     0x09\r
53 #define CSR_TIF_BB        (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TIF_BitNumber * 4))\r
54 \r
55 /* Alias word address of TEF bit */\r
56 #define TEF_BitNumber     0x08\r
57 #define CSR_TEF_BB        (PERIPH_BB_BASE + (CSR_OFFSET * 32) + (TEF_BitNumber * 4))\r
58 \r
59 \r
60 /* ---------------------- BKP registers bit mask ------------------------ */\r
61 /* RTCCR register bit mask */\r
62 #define RTCCR_CAL_Mask    ((u16)0xFF80)\r
63 \r
64 /* CSR register bit mask */\r
65 #define CSR_CTE_Set       ((u16)0x0001)\r
66 #define CSR_CTI_Set       ((u16)0x0002)\r
67 \r
68 /* Private macro -------------------------------------------------------------*/\r
69 /* Private variables ---------------------------------------------------------*/\r
70 /* Private function prototypes -----------------------------------------------*/\r
71 /* Private functions ---------------------------------------------------------*/\r
72 \r
73 /*******************************************************************************\r
74 * Function Name  : BKP_DeInit\r
75 * Description    : Deinitializes the BKP peripheral registers to their default\r
76 *                  reset values.\r
77 * Input          : None\r
78 * Output         : None\r
79 * Return         : None\r
80 *******************************************************************************/\r
81 void BKP_DeInit(void)\r
82 {\r
83   RCC_BackupResetCmd(ENABLE);\r
84   RCC_BackupResetCmd(DISABLE);\r
85 }\r
86 \r
87 /*******************************************************************************\r
88 * Function Name  : BKP_TamperPinLevelConfig\r
89 * Description    : Configures the Tamper Pin active level.\r
90 * Input          : - BKP_TamperPinLevel: specifies the Tamper Pin active level.\r
91 *                    This parameter can be one of the following values:\r
92 *                       - BKP_TamperPinLevel_High: Tamper pin active on high level\r
93 *                       - BKP_TamperPinLevel_Low: Tamper pin active on low level\r
94 * Output         : None\r
95 * Return         : None\r
96 *******************************************************************************/\r
97 void BKP_TamperPinLevelConfig(u16 BKP_TamperPinLevel)\r
98 {\r
99   /* Check the parameters */\r
100   assert(IS_BKP_TAMPER_PIN_LEVEL(BKP_TamperPinLevel));\r
101 \r
102   *(vu32 *) CR_TPAL_BB = BKP_TamperPinLevel;\r
103 }\r
104 \r
105 /*******************************************************************************\r
106 * Function Name  : BKP_TamperPinCmd\r
107 * Description    : Enables or disables the Tamper Pin activation.\r
108 * Input          : - NewState: new state of the Tamper Pin activation.\r
109 *                    This parameter can be: ENABLE or DISABLE.\r
110 * Output         : None\r
111 * Return         : None\r
112 *******************************************************************************/\r
113 void BKP_TamperPinCmd(FunctionalState NewState)\r
114 {\r
115   /* Check the parameters */\r
116   assert(IS_FUNCTIONAL_STATE(NewState));\r
117 \r
118   *(vu32 *) CR_TPE_BB = (u32)NewState;\r
119 }\r
120 \r
121 /*******************************************************************************\r
122 * Function Name  : BKP_ITConfig\r
123 * Description    : Enables or disables the Tamper Pin Interrupt.\r
124 * Input          : - NewState: new state of the Tamper Pin Interrupt.\r
125 *                    This parameter can be: ENABLE or DISABLE.\r
126 * Output         : None\r
127 * Return         : None\r
128 *******************************************************************************/\r
129 void BKP_ITConfig(FunctionalState NewState)\r
130 {\r
131   /* Check the parameters */\r
132   assert(IS_FUNCTIONAL_STATE(NewState));\r
133 \r
134   *(vu32 *) CSR_TPIE_BB = (u32)NewState;\r
135 }\r
136 \r
137 /*******************************************************************************\r
138 * Function Name  : BKP_RTCCalibrationClockOutputCmd\r
139 * Description    : Enables or disables the output of the Calibration Clock.\r
140 * Input          : - NewState: new state of the Calibration Clock output.\r
141 *                    This parameter can be: ENABLE or DISABLE.\r
142 * Output         : None\r
143 * Return         : None\r
144 *******************************************************************************/\r
145 void BKP_RTCCalibrationClockOutputCmd(FunctionalState NewState)\r
146 {\r
147   /* Check the parameters */\r
148   assert(IS_FUNCTIONAL_STATE(NewState));\r
149 \r
150   *(vu32 *) RTCCR_CCO_BB = (u32)NewState;\r
151 }\r
152 \r
153 /*******************************************************************************\r
154 * Function Name  : BKP_SetRTCCalibrationValue\r
155 * Description    : Sets RTC Clock Calibration value.\r
156 * Input          : - CalibrationValue: specifies the RTC Clock Calibration value.\r
157 *                    This parameter must be a number between 0 and 0x7F.\r
158 * Output         : None\r
159 * Return         : None\r
160 *******************************************************************************/\r
161 void BKP_SetRTCCalibrationValue(u8 CalibrationValue)\r
162 {\r
163   u16 tmpreg = 0;\r
164 \r
165   /* Check the parameters */\r
166   assert(IS_BKP_CALIBRATION_VALUE(CalibrationValue));\r
167 \r
168   tmpreg = BKP->RTCCR;\r
169 \r
170   /* Clear CAL[6:0] bits */\r
171   tmpreg &= RTCCR_CAL_Mask;\r
172 \r
173   /* Set CAL[6:0] bits according to CalibrationValue value */\r
174   tmpreg |= CalibrationValue;\r
175 \r
176   /* Store the new value */\r
177   BKP->RTCCR = tmpreg;\r
178 }\r
179 \r
180 /*******************************************************************************\r
181 * Function Name  : BKP_WriteBackupRegister\r
182 * Description    : Writes user data to the specified Data Backup Register.\r
183 * Input          : - BKP_DR: specifies the Data Backup Register.\r
184 *                    This parameter can be BKP_DRx where x:[1, 10]\r
185 *                  - Data: data to write\r
186 * Output         : None\r
187 * Return         : None\r
188 *******************************************************************************/\r
189 void BKP_WriteBackupRegister(u16 BKP_DR, u16 Data)\r
190 {\r
191   /* Check the parameters */\r
192   assert(IS_BKP_DR(BKP_DR));\r
193 \r
194   *(vu16 *) (BKP_BASE + BKP_DR) = Data;\r
195 }\r
196 \r
197 /*******************************************************************************\r
198 * Function Name  : BKP_ReadBackupRegister\r
199 * Description    : Reads data from the specified Data Backup Register.\r
200 * Input          : - BKP_DR: specifies the Data Backup Register.\r
201 *                    This parameter can be BKP_DRx where x:[1, 10]\r
202 * Output         : None\r
203 * Return         : The content of the specified Data Backup Register\r
204 *******************************************************************************/\r
205 u16 BKP_ReadBackupRegister(u16 BKP_DR)\r
206 {\r
207   /* Check the parameters */\r
208   assert(IS_BKP_DR(BKP_DR));\r
209 \r
210   return (*(vu16 *) (BKP_BASE + BKP_DR));\r
211 }\r
212 \r
213 /*******************************************************************************\r
214 * Function Name  : BKP_GetFlagStatus\r
215 * Description    : Checks whether the Tamper Pin Event flag is set or not.\r
216 * Input          : None\r
217 * Output         : None\r
218 * Return         : The new state of the Tamper Pin Event flag (SET or RESET).\r
219 *******************************************************************************/\r
220 FlagStatus BKP_GetFlagStatus(void)\r
221 {\r
222   return (FlagStatus)(*(vu32 *) CSR_TEF_BB);\r
223 }\r
224 \r
225 /*******************************************************************************\r
226 * Function Name  : BKP_ClearFlag\r
227 * Description    : Clears Tamper Pin Event pending flag.\r
228 * Input          : None\r
229 * Output         : None\r
230 * Return         : None\r
231 *******************************************************************************/\r
232 void BKP_ClearFlag(void)\r
233 {\r
234   /* Set CTE bit to clear Tamper Pin Event flag */\r
235   BKP->CSR |= CSR_CTE_Set;\r
236 }\r
237 \r
238 /*******************************************************************************\r
239 * Function Name  : BKP_GetITStatus\r
240 * Description    : Checks whether the Tamper Pin Interrupt has occurred or not.\r
241 * Input          : None\r
242 * Output         : None\r
243 * Return         : The new state of the Tamper Pin Interrupt (SET or RESET).\r
244 *******************************************************************************/\r
245 ITStatus BKP_GetITStatus(void)\r
246 {\r
247   return (ITStatus)(*(vu32 *) CSR_TIF_BB);\r
248 }\r
249 \r
250 /*******************************************************************************\r
251 * Function Name  : BKP_ClearITPendingBit\r
252 * Description    : Clears Tamper Pin Interrupt pending bit.\r
253 * Input          : None\r
254 * Output         : None\r
255 * Return         : None\r
256 *******************************************************************************/\r
257 void BKP_ClearITPendingBit(void)\r
258 {\r
259   /* Set CTI bit to clear Tamper Pin Interrupt pending bit */\r
260   BKP->CSR |= CSR_CTI_Set;\r
261 }\r
262 \r
263 /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/\r