]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil/ST_Library/include/stm32f7xx_hal_rtc_ex.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil / ST_Library / include / stm32f7xx_hal_rtc_ex.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_rtc_ex.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0RC1\r
6   * @date    24-March-2015\r
7   * @brief   Header file of RTC HAL Extension module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */ \r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_HAL_RTC_EX_H\r
40 #define __STM32F7xx_HAL_RTC_EX_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f7xx_hal_def.h"\r
48 \r
49 /** @addtogroup STM32F7xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @addtogroup RTCEx\r
54   * @{\r
55   */ \r
56 \r
57 /* Exported types ------------------------------------------------------------*/ \r
58 /** @defgroup RTCEx_Exported_Types RTCEx Exported Types\r
59   * @{\r
60   */\r
61 \r
62 /** \r
63   * @brief  RTC Tamper structure definition  \r
64   */\r
65 typedef struct \r
66 {\r
67   uint32_t Tamper;                      /*!< Specifies the Tamper Pin.\r
68                                              This parameter can be a value of @ref  RTCEx_Tamper_Pins_Definitions */\r
69   \r
70   uint32_t Interrupt;                   /*!< Specifies the Tamper Interrupt.\r
71                                              This parameter can be a value of @ref  RTCEx_Tamper_Interrupt_Definitions */                                  \r
72                                              \r
73   uint32_t Trigger;                     /*!< Specifies the Tamper Trigger.\r
74                                              This parameter can be a value of @ref  RTCEx_Tamper_Trigger_Definitions */\r
75                                              \r
76   uint32_t NoErase;                     /*!< Specifies the Tamper no erase mode.\r
77                                              This parameter can be a value of @ref  RTCEx_Tamper_EraseBackUp_Definitions */\r
78 \r
79   uint32_t MaskFlag;                     /*!< Specifies the Tamper Flag masking.\r
80                                              This parameter can be a value of @ref RTCEx_Tamper_MaskFlag_Definitions   */\r
81 \r
82   uint32_t Filter;                      /*!< Specifies the RTC Filter Tamper.\r
83                                              This parameter can be a value of @ref RTCEx_Tamper_Filter_Definitions */\r
84   \r
85   uint32_t SamplingFrequency;           /*!< Specifies the sampling frequency.\r
86                                              This parameter can be a value of @ref RTCEx_Tamper_Sampling_Frequencies_Definitions */\r
87                                       \r
88   uint32_t PrechargeDuration;           /*!< Specifies the Precharge Duration .\r
89                                              This parameter can be a value of @ref RTCEx_Tamper_Pin_Precharge_Duration_Definitions */ \r
90  \r
91   uint32_t TamperPullUp;                /*!< Specifies the Tamper PullUp .\r
92                                              This parameter can be a value of @ref RTCEx_Tamper_Pull_UP_Definitions */           \r
93  \r
94   uint32_t TimeStampOnTamperDetection;  /*!< Specifies the TimeStampOnTamperDetection.\r
95                                              This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */                      \r
96 }RTC_TamperTypeDef;\r
97 /**\r
98   * @}\r
99   */\r
100 \r
101 /* Exported constants --------------------------------------------------------*/\r
102 /** @defgroup RTCEx_Exported_Constants RTCEx Exported Constants\r
103   * @{\r
104   */\r
105 \r
106 /** @defgroup RTCEx_Output_selection_Definitions RTCEx Output selection Definitions \r
107   * @{\r
108   */ \r
109 #define RTC_OUTPUT_DISABLE             ((uint32_t)0x00000000)\r
110 #define RTC_OUTPUT_ALARMA              ((uint32_t)0x00200000)\r
111 #define RTC_OUTPUT_ALARMB              ((uint32_t)0x00400000)\r
112 #define RTC_OUTPUT_WAKEUP              ((uint32_t)0x00600000)\r
113 /**\r
114   * @}\r
115   */ \r
116   \r
117 /** @defgroup RTCEx_Backup_Registers_Definitions RTC Backup Registers Definitions\r
118   * @{\r
119   */\r
120 #define RTC_BKP_DR0                       ((uint32_t)0x00000000)\r
121 #define RTC_BKP_DR1                       ((uint32_t)0x00000001)\r
122 #define RTC_BKP_DR2                       ((uint32_t)0x00000002)\r
123 #define RTC_BKP_DR3                       ((uint32_t)0x00000003)\r
124 #define RTC_BKP_DR4                       ((uint32_t)0x00000004)\r
125 #define RTC_BKP_DR5                       ((uint32_t)0x00000005)\r
126 #define RTC_BKP_DR6                       ((uint32_t)0x00000006)\r
127 #define RTC_BKP_DR7                       ((uint32_t)0x00000007)\r
128 #define RTC_BKP_DR8                       ((uint32_t)0x00000008)\r
129 #define RTC_BKP_DR9                       ((uint32_t)0x00000009)\r
130 #define RTC_BKP_DR10                      ((uint32_t)0x0000000A)\r
131 #define RTC_BKP_DR11                      ((uint32_t)0x0000000B)\r
132 #define RTC_BKP_DR12                      ((uint32_t)0x0000000C)\r
133 #define RTC_BKP_DR13                      ((uint32_t)0x0000000D)\r
134 #define RTC_BKP_DR14                      ((uint32_t)0x0000000E)\r
135 #define RTC_BKP_DR15                      ((uint32_t)0x0000000F)\r
136 #define RTC_BKP_DR16                      ((uint32_t)0x00000010)\r
137 #define RTC_BKP_DR17                      ((uint32_t)0x00000011)\r
138 #define RTC_BKP_DR18                      ((uint32_t)0x00000012)\r
139 #define RTC_BKP_DR19                      ((uint32_t)0x00000013)\r
140 #define RTC_BKP_DR20                      ((uint32_t)0x00000014)\r
141 #define RTC_BKP_DR21                      ((uint32_t)0x00000015)\r
142 #define RTC_BKP_DR22                      ((uint32_t)0x00000016)\r
143 #define RTC_BKP_DR23                      ((uint32_t)0x00000017)\r
144 #define RTC_BKP_DR24                      ((uint32_t)0x00000018)\r
145 #define RTC_BKP_DR25                      ((uint32_t)0x00000019)\r
146 #define RTC_BKP_DR26                      ((uint32_t)0x0000001A)\r
147 #define RTC_BKP_DR27                      ((uint32_t)0x0000001B)\r
148 #define RTC_BKP_DR28                      ((uint32_t)0x0000001C)\r
149 #define RTC_BKP_DR29                      ((uint32_t)0x0000001D)\r
150 #define RTC_BKP_DR30                      ((uint32_t)0x0000001E)\r
151 #define RTC_BKP_DR31                      ((uint32_t)0x0000001F)\r
152 /**\r
153   * @}\r
154   */ \r
155 \r
156 /** @defgroup RTCEx_Time_Stamp_Edges_definitions RTCEx Time Stamp Edges definitions \r
157   * @{\r
158   */ \r
159 #define RTC_TIMESTAMPEDGE_RISING          ((uint32_t)0x00000000)\r
160 #define RTC_TIMESTAMPEDGE_FALLING         ((uint32_t)0x00000008)\r
161 /**\r
162   * @}\r
163   */\r
164   \r
165 /** @defgroup RTCEx_Tamper_Pins_Definitions RTCEx Tamper Pins Definitions \r
166   * @{\r
167   */ \r
168 #define RTC_TAMPER_1                    RTC_TAMPCR_TAMP1E\r
169 #define RTC_TAMPER_2                    RTC_TAMPCR_TAMP2E\r
170 #define RTC_TAMPER_3                    RTC_TAMPCR_TAMP3E\r
171 /**\r
172   * @}\r
173   */\r
174 \r
175 /** @defgroup RTCEx_Tamper_Interrupt_Definitions RTCEx Tamper Interrupt Definitions\r
176   * @{\r
177   */\r
178 #define RTC_TAMPER1_INTERRUPT                RTC_TAMPCR_TAMP1IE\r
179 #define RTC_TAMPER2_INTERRUPT                RTC_TAMPCR_TAMP2IE\r
180 #define RTC_TAMPER3_INTERRUPT                RTC_TAMPCR_TAMP3IE\r
181 #define RTC_ALL_TAMPER_INTERRUPT             RTC_TAMPCR_TAMPIE\r
182 /**\r
183   * @}\r
184   */\r
185 \r
186 /** @defgroup RTCEx_TimeStamp_Pin_Selection RTCEx TimeStamp Pin Selection\r
187   * @{\r
188   */ \r
189 #define RTC_TIMESTAMPPIN_PC13              ((uint32_t)0x00000000)\r
190 #define RTC_TIMESTAMPPIN_PI8               ((uint32_t)0x00000002)\r
191 #define RTC_TIMESTAMPPIN_PC1               ((uint32_t)0x00000004)\r
192 /**\r
193   * @}\r
194   */ \r
195 \r
196 /** @defgroup RTCEx_Tamper_Trigger_Definitions RTCEx Tamper Trigger Definitions \r
197   * @{\r
198   */ \r
199 #define RTC_TAMPERTRIGGER_RISINGEDGE       ((uint32_t)0x00000000)\r
200 #define RTC_TAMPERTRIGGER_FALLINGEDGE      ((uint32_t)0x00000002)\r
201 #define RTC_TAMPERTRIGGER_LOWLEVEL         RTC_TAMPERTRIGGER_RISINGEDGE\r
202 #define RTC_TAMPERTRIGGER_HIGHLEVEL        RTC_TAMPERTRIGGER_FALLINGEDGE \r
203 /**\r
204   * @}\r
205   */  \r
206 \r
207   /** @defgroup RTCEx_Tamper_EraseBackUp_Definitions RTCEx Tamper EraseBackUp Definitions\r
208 * @{\r
209 */\r
210 #define RTC_TAMPER_ERASE_BACKUP_ENABLE               ((uint32_t)0x00000000)\r
211 #define RTC_TAMPER_ERASE_BACKUP_DISABLE              ((uint32_t)0x00020000)\r
212 /**\r
213   * @}\r
214   */\r
215 \r
216 /** @defgroup RTCEx_Tamper_MaskFlag_Definitions RTCEx Tamper MaskFlag Definitions\r
217   * @{\r
218   */\r
219 #define RTC_TAMPERMASK_FLAG_DISABLE                ((uint32_t)0x00000000)\r
220 #define RTC_TAMPERMASK_FLAG_ENABLE                 ((uint32_t)0x00040000)\r
221 /**\r
222   * @}\r
223   */\r
224   \r
225 /** @defgroup RTCEx_Tamper_Filter_Definitions RTCEx Tamper Filter Definitions \r
226   * @{\r
227   */ \r
228 #define RTC_TAMPERFILTER_DISABLE   ((uint32_t)0x00000000)  /*!< Tamper filter is disabled */\r
229 \r
230 #define RTC_TAMPERFILTER_2SAMPLE   ((uint32_t)0x00000800)  /*!< Tamper is activated after 2 \r
231                                                                 consecutive samples at the active level */\r
232 #define RTC_TAMPERFILTER_4SAMPLE   ((uint32_t)0x00001000)  /*!< Tamper is activated after 4 \r
233                                                                 consecutive samples at the active level */\r
234 #define RTC_TAMPERFILTER_8SAMPLE   ((uint32_t)0x00001800)  /*!< Tamper is activated after 8 \r
235                                                                 consecutive samples at the active leve. */\r
236 /**\r
237   * @}\r
238   */\r
239 \r
240 /** @defgroup RTCEx_Tamper_Sampling_Frequencies_Definitions RTCEx Tamper Sampling Frequencies Definitions \r
241   * @{\r
242   */\r
243 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768  ((uint32_t)0x00000000)  /*!< Each of the tamper inputs are sampled\r
244                                                                              with a frequency =  RTCCLK / 32768 */\r
245 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384  ((uint32_t)0x00000100)  /*!< Each of the tamper inputs are sampled\r
246                                                                              with a frequency =  RTCCLK / 16384 */\r
247 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192   ((uint32_t)0x00000200)  /*!< Each of the tamper inputs are sampled\r
248                                                                              with a frequency =  RTCCLK / 8192  */\r
249 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096   ((uint32_t)0x00000300)  /*!< Each of the tamper inputs are sampled\r
250                                                                              with a frequency =  RTCCLK / 4096  */\r
251 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048   ((uint32_t)0x00000400)  /*!< Each of the tamper inputs are sampled\r
252                                                                              with a frequency =  RTCCLK / 2048  */\r
253 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024   ((uint32_t)0x00000500)  /*!< Each of the tamper inputs are sampled\r
254                                                                              with a frequency =  RTCCLK / 1024  */\r
255 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512    ((uint32_t)0x00000600)  /*!< Each of the tamper inputs are sampled\r
256                                                                              with a frequency =  RTCCLK / 512   */\r
257 #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256    ((uint32_t)0x00000700)  /*!< Each of the tamper inputs are sampled\r
258                                                                              with a frequency =  RTCCLK / 256   */\r
259 /**\r
260   * @}\r
261   */\r
262 \r
263 /** @defgroup RTCEx_Tamper_Pin_Precharge_Duration_Definitions RTCEx Tamper Pin Precharge Duration Definitions \r
264   * @{\r
265   */ \r
266 #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK ((uint32_t)0x00000000)  /*!< Tamper pins are pre-charged before \r
267                                                                          sampling during 1 RTCCLK cycle */\r
268 #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK ((uint32_t)0x00002000)  /*!< Tamper pins are pre-charged before \r
269                                                                          sampling during 2 RTCCLK cycles */\r
270 #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK ((uint32_t)0x00004000)  /*!< Tamper pins are pre-charged before \r
271                                                                          sampling during 4 RTCCLK cycles */\r
272 #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK ((uint32_t)0x00006000)  /*!< Tamper pins are pre-charged before \r
273                                                                          sampling during 8 RTCCLK cycles */\r
274 /**\r
275   * @}\r
276   */\r
277   \r
278 /** @defgroup RTCEx_Tamper_TimeStampOnTamperDetection_Definitions RTCEx Tamper TimeStampOnTamperDetection Definitions\r
279   * @{\r
280   */ \r
281 #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE  ((uint32_t)RTC_TAMPCR_TAMPTS)  /*!< TimeStamp on Tamper Detection event saved        */\r
282 #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE ((uint32_t)0x00000000)        /*!< TimeStamp on Tamper Detection event is not saved */                                                                      \r
283 /**\r
284   * @}\r
285   */\r
286   \r
287 /** @defgroup  RTCEx_Tamper_Pull_UP_Definitions RTCEx Tamper Pull UP Definitions\r
288   * @{\r
289   */ \r
290 #define RTC_TAMPER_PULLUP_ENABLE  ((uint32_t)0x00000000)            /*!< TimeStamp on Tamper Detection event saved        */\r
291 #define RTC_TAMPER_PULLUP_DISABLE ((uint32_t)RTC_TAMPCR_TAMPPUDIS)   /*!< TimeStamp on Tamper Detection event is not saved */                                                                  \r
292 /**\r
293   * @}\r
294   */\r
295 \r
296 /** @defgroup RTCEx_Wakeup_Timer_Definitions RTCEx Wakeup Timer Definitions \r
297   * @{\r
298   */ \r
299 #define RTC_WAKEUPCLOCK_RTCCLK_DIV16        ((uint32_t)0x00000000)\r
300 #define RTC_WAKEUPCLOCK_RTCCLK_DIV8         ((uint32_t)0x00000001)\r
301 #define RTC_WAKEUPCLOCK_RTCCLK_DIV4         ((uint32_t)0x00000002)\r
302 #define RTC_WAKEUPCLOCK_RTCCLK_DIV2         ((uint32_t)0x00000003)\r
303 #define RTC_WAKEUPCLOCK_CK_SPRE_16BITS      ((uint32_t)0x00000004)\r
304 #define RTC_WAKEUPCLOCK_CK_SPRE_17BITS      ((uint32_t)0x00000006)\r
305 /**\r
306   * @}\r
307   */ \r
308 \r
309 /** @defgroup RTCEx_Smooth_calib_period_Definitions RTCEx Smooth calib period Definitions \r
310   * @{\r
311   */ \r
312 #define RTC_SMOOTHCALIB_PERIOD_32SEC   ((uint32_t)0x00000000)  /*!< If RTCCLK = 32768 Hz, Smooth calibration\r
313                                                                     period is 32s,  else 2exp20 RTCCLK seconds */\r
314 #define RTC_SMOOTHCALIB_PERIOD_16SEC   ((uint32_t)0x00002000)  /*!< If RTCCLK = 32768 Hz, Smooth calibration \r
315                                                                     period is 16s, else 2exp19 RTCCLK seconds */\r
316 #define RTC_SMOOTHCALIB_PERIOD_8SEC    ((uint32_t)0x00004000)  /*!< If RTCCLK = 32768 Hz, Smooth calibration \r
317                                                                     period is 8s, else 2exp18 RTCCLK seconds */                                        \r
318 /**\r
319   * @}\r
320   */ \r
321 \r
322 /** @defgroup RTCEx_Smooth_calib_Plus_pulses_Definitions RTCEx Smooth calib Plus pulses Definitions \r
323   * @{\r
324   */ \r
325 #define RTC_SMOOTHCALIB_PLUSPULSES_SET    ((uint32_t)0x00008000)  /*!< The number of RTCCLK pulses added  \r
326                                                                        during a X -second window = Y - CALM[8:0] \r
327                                                                        with Y = 512, 256, 128 when X = 32, 16, 8 */\r
328 #define RTC_SMOOTHCALIB_PLUSPULSES_RESET  ((uint32_t)0x00000000)  /*!< The number of RTCCLK pulses subbstited\r
329                                                                        during a 32-second window = CALM[8:0] */\r
330 /**\r
331   * @}\r
332   */\r
333 \r
334 /** @defgroup RTCEx_Add_1_Second_Parameter_Definitions RTCEx Add 1 Second Parameter Definitions\r
335   * @{\r
336   */ \r
337 #define RTC_SHIFTADD1S_RESET      ((uint32_t)0x00000000)\r
338 #define RTC_SHIFTADD1S_SET        ((uint32_t)0x80000000)\r
339 /**\r
340   * @}\r
341   */\r
342 \r
343  /** @defgroup RTCEx_Calib_Output_selection_Definitions RTCEx Calib Output selection Definitions\r
344   * @{\r
345   */ \r
346 #define RTC_CALIBOUTPUT_512HZ            ((uint32_t)0x00000000) \r
347 #define RTC_CALIBOUTPUT_1HZ              ((uint32_t)0x00080000)\r
348 /**\r
349   * @}\r
350   */ \r
351   \r
352 /**\r
353   * @}\r
354   */ \r
355   \r
356 /* Exported macros -----------------------------------------------------------*/\r
357 /** @defgroup RTCEx_Exported_Macros RTCEx Exported Macros\r
358   * @{\r
359   */\r
360 \r
361 /**\r
362   * @brief  Enable the RTC WakeUp Timer peripheral.\r
363   * @param  __HANDLE__: specifies the RTC handle.\r
364   * @retval None\r
365   */\r
366 #define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__)                     ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))\r
367 \r
368 /**\r
369   * @brief  Disable the RTC WakeUp Timer peripheral.\r
370   * @param  __HANDLE__: specifies the RTC handle.\r
371   * @retval None\r
372   */\r
373 #define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__)                    ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))\r
374 \r
375 /**\r
376   * @brief  Enable the RTC WakeUpTimer interrupt.\r
377   * @param  __HANDLE__: specifies the RTC handle.\r
378   * @param  __INTERRUPT__: specifies the RTC WakeUpTimer interrupt sources to be enabled or disabled.\r
379   *         This parameter can be:\r
380   *            @arg RTC_IT_WUT: WakeUpTimer interrupt\r
381   * @retval None\r
382   */\r
383 #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))\r
384 \r
385 /**\r
386   * @brief  Disable the RTC WakeUpTimer interrupt.\r
387   * @param  __HANDLE__: specifies the RTC handle.\r
388   * @param  __INTERRUPT__: specifies the RTC WakeUpTimer interrupt sources to be enabled or disabled.\r
389   *         This parameter can be:\r
390   *            @arg RTC_IT_WUT: WakeUpTimer interrupt\r
391   * @retval None\r
392   */\r
393 #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))\r
394 \r
395 /**\r
396   * @brief  Check whether the specified RTC WakeUpTimer interrupt has occurred or not.\r
397   * @param  __HANDLE__: specifies the RTC handle.\r
398   * @param  __INTERRUPT__: specifies the RTC WakeUpTimer interrupt sources to check.\r
399   *         This parameter can be:\r
400   *            @arg RTC_IT_WUT:  WakeUpTimer interrupt\r
401   * @retval None\r
402   */\r
403 #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __INTERRUPT__)       (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 4)) != RESET) ? SET : RESET)\r
404 \r
405 /**\r
406   * @brief  Check whether the specified RTC Wake Up timer interrupt has been enabled or not.\r
407   * @param  __HANDLE__: specifies the RTC handle.\r
408   * @param  __INTERRUPT__: specifies the RTC Wake Up timer interrupt sources to check.\r
409   *         This parameter can be:\r
410   *            @arg RTC_IT_WUT:  WakeUpTimer interrupt\r
411   * @retval None\r
412   */\r
413 #define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)   (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)\r
414 \r
415 /**\r
416   * @brief  Get the selected RTC WakeUpTimer's flag status.\r
417   * @param  __HANDLE__: specifies the RTC handle.\r
418   * @param  __FLAG__: specifies the RTC WakeUpTimer Flag is pending or not.\r
419   *          This parameter can be:\r
420   *             @arg RTC_FLAG_WUTF\r
421   *             @arg RTC_FLAG_WUTWF\r
422   * @retval None\r
423   */\r
424 #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__)   (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)\r
425 \r
426 /**\r
427   * @brief  Clear the RTC Wake Up timer's pending flags.\r
428   * @param  __HANDLE__: specifies the RTC handle.\r
429   * @param  __FLAG__: specifies the RTC WakeUpTimer Flag to clear.\r
430   *         This parameter can be:\r
431   *            @arg RTC_FLAG_WUTF\r
432   * @retval None\r
433   */\r
434 #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~(((__FLAG__) | RTC_ISR_INIT)& 0x0000FFFF)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT)) \r
435 \r
436 /**\r
437   * @brief  Enable the RTC Tamper1 input detection.\r
438   * @param  __HANDLE__: specifies the RTC handle.\r
439   * @retval None\r
440   */\r
441 #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__)                         ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP1E))\r
442 \r
443 /**\r
444   * @brief  Disable the RTC Tamper1 input detection.\r
445   * @param  __HANDLE__: specifies the RTC handle.\r
446   * @retval None\r
447   */\r
448 #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__)                        ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP1E))\r
449 \r
450 /**\r
451   * @brief  Enable the RTC Tamper2 input detection.\r
452   * @param  __HANDLE__: specifies the RTC handle.\r
453   * @retval None\r
454   */\r
455 #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__)                         ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP2E))\r
456 \r
457 /**\r
458   * @brief  Disable the RTC Tamper2 input detection.\r
459   * @param  __HANDLE__: specifies the RTC handle.\r
460   * @retval None\r
461   */\r
462 #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__)                        ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP2E))\r
463 \r
464 /**\r
465   * @brief  Enable the RTC Tamper3 input detection.\r
466   * @param  __HANDLE__: specifies the RTC handle.\r
467   * @retval None\r
468   */\r
469 #define __HAL_RTC_TAMPER3_ENABLE(__HANDLE__)                         ((__HANDLE__)->Instance->TAMPCR |= (RTC_TAMPCR_TAMP3E))\r
470 \r
471 /**\r
472   * @brief  Disable the RTC Tamper3 input detection.\r
473   * @param  __HANDLE__: specifies the RTC handle.\r
474   * @retval None\r
475   */\r
476 #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__)                        ((__HANDLE__)->Instance->TAMPCR &= ~(RTC_TAMPCR_TAMP3E))\r
477 \r
478 /**\r
479   * @brief  Check whether the specified RTC Tamper interrupt has occurred or not.\r
480   * @param  __HANDLE__: specifies the RTC handle.\r
481   * @param  __INTERRUPT__: specifies the RTC Tamper interrupt to check.\r
482   *         This parameter can be:\r
483   *            @arg  RTC_IT_TAMP: All tampers interrupts\r
484   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt\r
485   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt\r
486   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt\r
487   * @retval None\r
488   */\r
489 #define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__)           (((__INTERRUPT__) == RTC_IT_TAMP1) ? (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 3)) != RESET) ? SET : RESET) : \\r
490                                                                       ((__INTERRUPT__) == RTC_IT_TAMP2) ? (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 5)) != RESET) ? SET : RESET) : \\r
491                                                                       (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 7)) != RESET) ? SET : RESET))\r
492 \r
493 /**\r
494   * @brief  Check whether the specified RTC Tamper interrupt has been enabled or not.\r
495   * @param  __HANDLE__: specifies the RTC handle.\r
496   * @param  __INTERRUPT__: specifies the RTC Tamper interrupt source to check.\r
497   *         This parameter can be:\r
498   *            @arg  RTC_IT_TAMP: All tampers interrupts\r
499   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt\r
500   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt\r
501   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt\r
502   * @retval None\r
503   */\r
504 #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)    (((((__HANDLE__)->Instance->TAMPCR) & (__INTERRUPT__)) != RESET) ? SET : RESET)\r
505 \r
506 /**\r
507   * @brief  Get the selected RTC Tamper's flag status.\r
508   * @param  __HANDLE__: specifies the RTC handle.\r
509   * @param  __FLAG__: specifies the RTC Tamper Flag is pending or not.\r
510   *          This parameter can be:\r
511   *             @arg RTC_FLAG_TAMP1F: Tamper1 flag\r
512   *             @arg RTC_FLAG_TAMP2F: Tamper2 flag\r
513   *             @arg RTC_FLAG_TAMP3F: Tamper3 flag\r
514   * @retval None\r
515   */\r
516 #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__)        (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)\r
517 \r
518 /**\r
519   * @brief  Clear the RTC Tamper's pending flags.\r
520   * @param  __HANDLE__: specifies the RTC handle.\r
521   * @param  __FLAG__: specifies the RTC Tamper Flag sources to clear.\r
522   *          This parameter can be:\r
523   *             @arg RTC_FLAG_TAMP1F: Tamper1 flag\r
524   *             @arg RTC_FLAG_TAMP2F: Tamper2 flag\r
525   *             @arg RTC_FLAG_TAMP3F: Tamper3 flag\r
526   * @retval None\r
527   */\r
528 #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__)      ((__HANDLE__)->Instance->ISR) = (~(((__FLAG__) | RTC_ISR_INIT)& 0x0000FFFF)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))\r
529 \r
530 /**\r
531   * @brief  Enable the RTC TimeStamp peripheral.\r
532   * @param  __HANDLE__: specifies the RTC handle.\r
533   * @retval None\r
534   */\r
535 #define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))\r
536 \r
537 /**\r
538   * @brief  Disable the RTC TimeStamp peripheral.\r
539   * @param  __HANDLE__: specifies the RTC handle.\r
540   * @retval None\r
541   */\r
542 #define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))\r
543 \r
544 /**\r
545   * @brief  Enable the RTC TimeStamp interrupt.\r
546   * @param  __HANDLE__: specifies the RTC handle.\r
547   * @param  __INTERRUPT__: specifies the RTC TimeStamp interrupt sources to be enabled or disabled.\r
548   *         This parameter can be:\r
549   *            @arg RTC_IT_TS: TimeStamp interrupt\r
550   * @retval None\r
551   */\r
552 #define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__)     ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))\r
553 \r
554 /**\r
555   * @brief  Disable the RTC TimeStamp interrupt.\r
556   * @param  __HANDLE__: specifies the RTC handle.\r
557   * @param  __INTERRUPT__: specifies the RTC TimeStamp interrupt sources to be enabled or disabled. \r
558   *         This parameter can be:\r
559   *            @arg RTC_IT_TS: TimeStamp interrupt\r
560   * @retval None\r
561   */\r
562 #define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))\r
563 \r
564 /**\r
565   * @brief  Check whether the specified RTC TimeStamp interrupt has occurred or not.\r
566   * @param  __HANDLE__: specifies the RTC handle.\r
567   * @param  __INTERRUPT__: specifies the RTC TimeStamp interrupt sources to check.\r
568   *         This parameter can be:\r
569   *            @arg RTC_IT_TS: TimeStamp interrupt\r
570   * @retval None\r
571   */\r
572 #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__)        (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 4)) != RESET) ? SET : RESET)\r
573 \r
574 /**\r
575   * @brief  Check whether the specified RTC Time Stamp interrupt has been enabled or not.\r
576   * @param  __HANDLE__: specifies the RTC handle.\r
577   * @param  __INTERRUPT__: specifies the RTC Time Stamp interrupt source to check.\r
578   *         This parameter can be:\r
579   *            @arg RTC_IT_TS: TimeStamp interrupt\r
580   * @retval None\r
581   */\r
582 #define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)\r
583 \r
584 /**\r
585   * @brief  Get the selected RTC TimeStamp's flag status.\r
586   * @param  __HANDLE__: specifies the RTC handle.\r
587   * @param  __FLAG__: specifies the RTC TimeStamp Flag is pending or not.\r
588   *         This parameter can be:\r
589   *            @arg RTC_FLAG_TSF\r
590   *            @arg RTC_FLAG_TSOVF\r
591   * @retval None\r
592   */\r
593 #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)     (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)\r
594 \r
595 /**\r
596   * @brief  Clear the RTC Time Stamp's pending flags.\r
597   * @param  __HANDLE__: specifies the RTC handle.\r
598   * @param  __FLAG__: specifies the RTC Alarm Flag sources to clear.\r
599   *          This parameter can be:\r
600   *             @arg RTC_FLAG_TSF\r
601   *             @arg RTC_FLAG_TSOVF\r
602   * @retval None\r
603   */\r
604 #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->ISR) = (~(((__FLAG__) | RTC_ISR_INIT)& 0x0000FFFF)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))\r
605 \r
606 /**\r
607   * @brief  Enable the RTC internal TimeStamp peripheral.\r
608   * @param  __HANDLE__: specifies the RTC handle.\r
609   * @retval None\r
610   */\r
611 #define __HAL_RTC_INTERNAL_TIMESTAMP_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_ITSE))\r
612 \r
613 /**\r
614   * @brief  Disable the RTC internal TimeStamp peripheral.\r
615   * @param  __HANDLE__: specifies the RTC handle.\r
616   * @retval None\r
617   */\r
618 #define __HAL_RTC_INTERNAL_TIMESTAMP_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ITSE))\r
619 \r
620 /**\r
621   * @brief  Get the selected RTC Internal Time Stamp's flag status.\r
622   * @param  __HANDLE__: specifies the RTC handle.\r
623   * @param  __FLAG__: specifies the RTC Internal Time Stamp Flag is pending or not.\r
624   *         This parameter can be:\r
625   *            @arg RTC_FLAG_ITSF\r
626   * @retval None\r
627   */\r
628 #define __HAL_RTC_INTERNAL_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)    (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)\r
629 \r
630 /**\r
631   * @brief  Clear the RTC Internal Time Stamp's pending flags.\r
632   * @param  __HANDLE__: specifies the RTC handle.\r
633   * @param  __FLAG__: specifies the RTC Internal Time Stamp Flag source to clear.\r
634   *          This parameter can be:\r
635   *             @arg RTC_FLAG_ITSF\r
636   * @retval None\r
637   */\r
638 #define __HAL_RTC_INTERNAL_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)  ((__HANDLE__)->Instance->ISR) = (~(((__FLAG__) | RTC_ISR_INIT)& 0x0003FFFF)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))\r
639 \r
640 /**\r
641   * @brief  Enable the RTC calibration output.\r
642   * @param  __HANDLE__: specifies the RTC handle.\r
643   * @retval None\r
644   */\r
645 #define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))\r
646 \r
647 /**\r
648   * @brief  Disable the calibration output.\r
649   * @param  __HANDLE__: specifies the RTC handle.\r
650   * @retval None\r
651   */\r
652 #define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))\r
653 \r
654 /**\r
655   * @brief  Enable the clock reference detection.\r
656   * @param  __HANDLE__: specifies the RTC handle.\r
657   * @retval None\r
658   */\r
659 #define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))\r
660 \r
661 /**\r
662   * @brief  Disable the clock reference detection.\r
663   * @param  __HANDLE__: specifies the RTC handle.\r
664   * @retval None\r
665   */\r
666 #define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__)               ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))\r
667 \r
668 /**\r
669   * @brief  Get the selected RTC shift operation's flag status.\r
670   * @param  __HANDLE__: specifies the RTC handle.\r
671   * @param  __FLAG__: specifies the RTC shift operation Flag is pending or not.\r
672   *          This parameter can be:\r
673   *             @arg RTC_FLAG_SHPF\r
674   * @retval None\r
675   */\r
676 #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__)         (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET) ? SET : RESET)\r
677 \r
678 /**\r
679   * @brief  Enable interrupt on the RTC WakeUp Timer associated Exti line.\r
680   * @retval None\r
681   */\r
682 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT()       (EXTI->IMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)\r
683 \r
684 /**\r
685   * @brief  Disable interrupt on the RTC WakeUp Timer associated Exti line.\r
686   * @retval None\r
687   */\r
688 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT()      (EXTI->IMR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))\r
689 \r
690 /**\r
691   * @brief  Enable event on the RTC WakeUp Timer associated Exti line.\r
692   * @retval None.\r
693   */\r
694 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT()    (EXTI->EMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)\r
695 \r
696 /**\r
697   * @brief  Disable event on the RTC WakeUp Timer associated Exti line.\r
698   * @retval None.\r
699   */\r
700 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT()   (EXTI->EMR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))\r
701 \r
702 /**\r
703   * @brief  Enable falling edge trigger on the RTC WakeUp Timer associated Exti line. \r
704   * @retval None.\r
705   */\r
706 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)\r
707 \r
708 /**\r
709   * @brief  Disable falling edge trigger on the RTC WakeUp Timer associated Exti line.\r
710   * @retval None.\r
711   */\r
712 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))\r
713 \r
714 /**\r
715   * @brief  Enable rising edge trigger on the RTC WakeUp Timer associated Exti line.\r
716   * @retval None.\r
717   */\r
718 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)\r
719 \r
720 /**\r
721   * @brief  Disable rising edge trigger on the RTC WakeUp Timer associated Exti line.\r
722   * @retval None.\r
723   */\r
724 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))\r
725 \r
726 /**\r
727   * @brief  Enable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.\r
728   * @retval None.\r
729   */\r
730 #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE();\r
731 \r
732 /**\r
733   * @brief  Disable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.\r
734   * This parameter can be:\r
735   * @retval None.\r
736   */\r
737 #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE() __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE();\r
738 \r
739 /**\r
740   * @brief Check whether the RTC WakeUp Timer associated Exti line interrupt flag is set or not.\r
741   * @retval Line Status.\r
742   */\r
743 #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG()              (EXTI->PR & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)\r
744 \r
745 /**\r
746   * @brief Clear the RTC WakeUp Timer associated Exti line flag.\r
747   * @retval None.\r
748   */\r
749 #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG()            (EXTI->PR = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)\r
750 \r
751 /**\r
752   * @brief Generate a Software interrupt on the RTC WakeUp Timer associated Exti line.\r
753   * @retval None.\r
754   */\r
755 #define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT()         (EXTI->SWIER |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)\r
756 \r
757 /**\r
758   * @brief  Enable interrupt on the RTC Tamper and Timestamp associated Exti line.\r
759   * @retval None\r
760   */\r
761 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()        (EXTI->IMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)\r
762 \r
763 /**\r
764   * @brief  Disable interrupt on the RTC Tamper and Timestamp associated Exti line.\r
765   * @retval None\r
766   */\r
767 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()       (EXTI->IMR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))\r
768 \r
769 /**\r
770   * @brief  Enable event on the RTC Tamper and Timestamp associated Exti line.\r
771   * @retval None.\r
772   */\r
773 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT()    (EXTI->EMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)\r
774 \r
775 /**\r
776   * @brief  Disable event on the RTC Tamper and Timestamp associated Exti line.\r
777   * @retval None.\r
778   */\r
779 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT()   (EXTI->EMR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))\r
780 \r
781 /**\r
782   * @brief  Enable falling edge trigger on the RTC Tamper and Timestamp associated Exti line. \r
783   * @retval None.\r
784   */\r
785 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)\r
786 \r
787 /**\r
788   * @brief  Disable falling edge trigger on the RTC Tamper and Timestamp associated Exti line.\r
789   * @retval None.\r
790   */\r
791 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))\r
792 \r
793 /**\r
794   * @brief  Enable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.\r
795   * @retval None.\r
796   */\r
797 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)\r
798 \r
799 /**\r
800   * @brief  Disable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.\r
801   * @retval None.\r
802   */\r
803 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))\r
804 \r
805 /**\r
806   * @brief  Enable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.\r
807   * @retval None.\r
808   */\r
809 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE();\r
810 \r
811 /**\r
812   * @brief  Disable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.\r
813   * This parameter can be:\r
814   * @retval None.\r
815   */\r
816 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE() __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE();\r
817 \r
818 /**\r
819   * @brief Check whether the RTC Tamper and Timestamp associated Exti line interrupt flag is set or not.\r
820   * @retval Line Status.\r
821   */\r
822 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()         (EXTI->PR & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)\r
823 \r
824 /**\r
825   * @brief Clear the RTC Tamper and Timestamp associated Exti line flag.\r
826   * @retval None.\r
827   */\r
828 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()       (EXTI->PR = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)\r
829 \r
830 /**\r
831   * @brief Generate a Software interrupt on the RTC Tamper and Timestamp associated Exti line\r
832   * @retval None.\r
833   */\r
834 #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()    (EXTI->SWIER |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)\r
835 \r
836 /**\r
837   * @}\r
838   */\r
839 \r
840 /* Exported functions --------------------------------------------------------*/\r
841 /** @defgroup RTCEx_Exported_Functions RTCEx Exported Functions\r
842   * @{\r
843   */\r
844 \r
845 /** @addtogroup RTCEx_Exported_Functions_Group1\r
846   * @{\r
847   */\r
848 \r
849 /* RTC TimeStamp and Tamper functions *****************************************/\r
850 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);\r
851 HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge, uint32_t RTC_TimeStampPin);\r
852 HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc);\r
853 HAL_StatusTypeDef HAL_RTCEx_SetInternalTimeStamp(RTC_HandleTypeDef *hrtc);\r
854 HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTimeStamp(RTC_HandleTypeDef *hrtc);\r
855 HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format);\r
856 \r
857 HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef* sTamper);\r
858 HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef* sTamper);\r
859 HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper);\r
860 void              HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc);\r
861 \r
862 void              HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc);\r
863 void              HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc);\r
864 void              HAL_RTCEx_Tamper3EventCallback(RTC_HandleTypeDef *hrtc);\r
865 void              HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc);\r
866 HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);\r
867 HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);\r
868 HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);\r
869 HAL_StatusTypeDef HAL_RTCEx_PollForTamper3Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);\r
870 /**\r
871   * @}\r
872   */\r
873 \r
874 /** @addtogroup RTCEx_Exported_Functions_Group2\r
875   * @{\r
876   */\r
877 /* RTC Wake-up functions ******************************************************/\r
878 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);\r
879 HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);\r
880 uint32_t          HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);\r
881 uint32_t          HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc);\r
882 void              HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc);\r
883 void              HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc);\r
884 HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);\r
885 /**\r
886   * @}\r
887   */\r
888 \r
889 /** @addtogroup RTCEx_Exported_Functions_Group3\r
890   * @{\r
891   */\r
892 /* Extension Control functions ************************************************/\r
893 void              HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data);\r
894 uint32_t          HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister);\r
895 \r
896 HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmouthCalibMinusPulsesValue);\r
897 HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS);\r
898 HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput);\r
899 HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc);\r
900 HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc);\r
901 HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc);\r
902 HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc);\r
903 HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc);\r
904 /**\r
905   * @}\r
906   */\r
907 \r
908 /** @addtogroup RTCEx_Exported_Functions_Group4\r
909   * @{\r
910   */\r
911 /* Extension RTC features functions *******************************************/\r
912 void              HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc); \r
913 HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);\r
914 /**\r
915   * @}\r
916   */ \r
917 \r
918 /**\r
919   * @}\r
920   */ \r
921 /* Private types -------------------------------------------------------------*/ \r
922 /* Private variables ---------------------------------------------------------*/\r
923 /* Private constants ---------------------------------------------------------*/\r
924 /** @defgroup RTCEx_Private_Constants RTCEx Private Constants\r
925   * @{\r
926   */\r
927 #define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT  ((uint32_t)0x00200000)  /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */                                               \r
928 #define RTC_EXTI_LINE_WAKEUPTIMER_EVENT       ((uint32_t)0x00400000)  /*!< External interrupt line 22 Connected to the RTC Wake-up event */  \r
929 /**\r
930   * @}\r
931   */\r
932 \r
933 /* Private macros ------------------------------------------------------------*/\r
934 /** @defgroup RTCEx_Private_Macros RTCEx Private Macros\r
935   * @{\r
936   */\r
937 \r
938 /** @defgroup RTCEx_IS_RTC_Definitions Private macros to check input parameters\r
939   * @{\r
940   */\r
941 #define IS_RTC_OUTPUT(__OUTPUT__)      (((__OUTPUT__) == RTC_OUTPUT_DISABLE) || \\r
942                                         ((__OUTPUT__) == RTC_OUTPUT_ALARMA)  || \\r
943                                         ((__OUTPUT__) == RTC_OUTPUT_ALARMB)  || \\r
944                                         ((__OUTPUT__) == RTC_OUTPUT_WAKEUP))\r
945 #define IS_RTC_BKP(__BKP__)               ((__BKP__) < (uint32_t) RTC_BKP_NUMBER)\r
946 #define IS_TIMESTAMP_EDGE(__EDGE__) (((__EDGE__) == RTC_TIMESTAMPEDGE_RISING) || \\r
947                                      ((__EDGE__) == RTC_TIMESTAMPEDGE_FALLING))\r
948 #define IS_RTC_TAMPER(__TAMPER__) ((((__TAMPER__) & (uint32_t)0xFFFFFFD6) == 0x00) && ((__TAMPER__) != (uint32_t)RESET))\r
949 #define IS_RTC_TAMPER_INTERRUPT(__INTERRUPT__) ((((__INTERRUPT__) & (uint32_t)0xFFB6FFFB) == 0x00) && ((__INTERRUPT__) != (uint32_t)RESET))\r
950 #define IS_RTC_TIMESTAMP_PIN(__PIN__) (((__PIN__) == RTC_TIMESTAMPPIN_PC13) || \\r
951                                        ((__PIN__) == RTC_TIMESTAMPPIN_PI8)  || \\r
952                                        ((__PIN__) == RTC_TIMESTAMPPIN_PC1))\r
953 #define IS_RTC_TAMPER_TRIGGER(__TRIGGER__) (((__TRIGGER__) == RTC_TAMPERTRIGGER_RISINGEDGE) || \\r
954                                         ((__TRIGGER__) == RTC_TAMPERTRIGGER_FALLINGEDGE) || \\r
955                                         ((__TRIGGER__) == RTC_TAMPERTRIGGER_LOWLEVEL) || \\r
956                                         ((__TRIGGER__) == RTC_TAMPERTRIGGER_HIGHLEVEL))\r
957 #define IS_RTC_TAMPER_ERASE_MODE(__MODE__)             (((__MODE__) == RTC_TAMPER_ERASE_BACKUP_ENABLE) || \\r
958                                                         ((__MODE__) == RTC_TAMPER_ERASE_BACKUP_DISABLE))\r
959 #define IS_RTC_TAMPER_MASKFLAG_STATE(__STATE__)     (((__STATE__) == RTC_TAMPERMASK_FLAG_ENABLE) || \\r
960                                                      ((__STATE__) == RTC_TAMPERMASK_FLAG_DISABLE))\r
961 #define IS_RTC_TAMPER_FILTER(__FILTER__)  (((__FILTER__) == RTC_TAMPERFILTER_DISABLE) || \\r
962                                        ((__FILTER__) == RTC_TAMPERFILTER_2SAMPLE) || \\r
963                                        ((__FILTER__) == RTC_TAMPERFILTER_4SAMPLE) || \\r
964                                        ((__FILTER__) == RTC_TAMPERFILTER_8SAMPLE))\r
965 #define IS_RTC_TAMPER_SAMPLING_FREQ(__FREQ__) (((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \\r
966                                            ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \\r
967                                            ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \\r
968                                            ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \\r
969                                            ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \\r
970                                            ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \\r
971                                            ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512)  || \\r
972                                            ((__FREQ__) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))\r
973 #define IS_RTC_TAMPER_PRECHARGE_DURATION(__DURATION__) (((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \\r
974                                                     ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \\r
975                                                     ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \\r
976                                                     ((__DURATION__) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))\r
977 #define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(__DETECTION__) (((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \\r
978                                                               ((__DETECTION__) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))\r
979 #define IS_RTC_TAMPER_PULLUP_STATE(__STATE__) (((__STATE__) == RTC_TAMPER_PULLUP_ENABLE) || \\r
980                                        ((__STATE__) == RTC_TAMPER_PULLUP_DISABLE))\r
981 #define IS_RTC_WAKEUP_CLOCK(__CLOCK__) (((__CLOCK__) == RTC_WAKEUPCLOCK_RTCCLK_DIV16)       || \\r
982                                     ((__CLOCK__) == RTC_WAKEUPCLOCK_RTCCLK_DIV8)    || \\r
983                                     ((__CLOCK__) == RTC_WAKEUPCLOCK_RTCCLK_DIV4)    || \\r
984                                     ((__CLOCK__) == RTC_WAKEUPCLOCK_RTCCLK_DIV2)    || \\r
985                                     ((__CLOCK__) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \\r
986                                     ((__CLOCK__) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))\r
987 \r
988 #define IS_RTC_WAKEUP_COUNTER(__COUNTER__)  ((__COUNTER__) <= 0xFFFF)\r
989 #define IS_RTC_SMOOTH_CALIB_PERIOD(__PERIOD__) (((__PERIOD__) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \\r
990                                                 ((__PERIOD__) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \\r
991                                                 ((__PERIOD__) == RTC_SMOOTHCALIB_PERIOD_8SEC))\r
992 #define IS_RTC_SMOOTH_CALIB_PLUS(__PLUS__) (((__PLUS__) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \\r
993                                             ((__PLUS__) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))\r
994 #define  IS_RTC_SMOOTH_CALIB_MINUS(__VALUE__) ((__VALUE__) <= 0x000001FF)\r
995 #define IS_RTC_SHIFT_ADD1S(__SEL__) (((__SEL__) == RTC_SHIFTADD1S_RESET) || \\r
996                                      ((__SEL__) == RTC_SHIFTADD1S_SET))\r
997 #define IS_RTC_SHIFT_SUBFS(__FS__) ((__FS__) <= 0x00007FFF)\r
998 #define IS_RTC_CALIB_OUTPUT(__OUTPUT__)  (((__OUTPUT__) == RTC_CALIBOUTPUT_512HZ) || \\r
999                                           ((__OUTPUT__) == RTC_CALIBOUTPUT_1HZ))\r
1000 /**\r
1001   * @}\r
1002   */\r
1003 \r
1004 /**\r
1005   * @}\r
1006   */\r
1007 \r
1008 /**\r
1009   * @}\r
1010   */ \r
1011 \r
1012 /**\r
1013   * @}\r
1014   */\r
1015 \r
1016 #ifdef __cplusplus\r
1017 }\r
1018 #endif\r
1019 \r
1020 #endif /* __STM32F7xx_HAL_RTC_EX_H */\r
1021 \r
1022 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r