Mercurial > public > ostc4
comparison Common/Drivers/STM32F4xx_HAL_DRIVER_v120/Inc/stm32f4xx_hal_rtc.h @ 38:5f11787b4f42
include in ostc4 repository
author | heinrichsweikamp |
---|---|
date | Sat, 28 Apr 2018 11:52:34 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
37:ccc45c0e1ea2 | 38:5f11787b4f42 |
---|---|
1 /** | |
2 ****************************************************************************** | |
3 * @file stm32f4xx_hal_rtc.h | |
4 * @author MCD Application Team | |
5 * @version V1.2.0 | |
6 * @date 26-December-2014 | |
7 * @brief Header file of RTC HAL module. | |
8 ****************************************************************************** | |
9 * @attention | |
10 * | |
11 * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> | |
12 * | |
13 * Redistribution and use in source and binary forms, with or without modification, | |
14 * are permitted provided that the following conditions are met: | |
15 * 1. Redistributions of source code must retain the above copyright notice, | |
16 * this list of conditions and the following disclaimer. | |
17 * 2. Redistributions in binary form must reproduce the above copyright notice, | |
18 * this list of conditions and the following disclaimer in the documentation | |
19 * and/or other materials provided with the distribution. | |
20 * 3. Neither the name of STMicroelectronics nor the names of its contributors | |
21 * may be used to endorse or promote products derived from this software | |
22 * without specific prior written permission. | |
23 * | |
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | |
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |
31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
34 * | |
35 ****************************************************************************** | |
36 */ | |
37 | |
38 /* Define to prevent recursive inclusion -------------------------------------*/ | |
39 #ifndef __STM32F4xx_HAL_RTC_H | |
40 #define __STM32F4xx_HAL_RTC_H | |
41 | |
42 #ifdef __cplusplus | |
43 extern "C" { | |
44 #endif | |
45 | |
46 /* Includes ------------------------------------------------------------------*/ | |
47 #include "stm32f4xx_hal_def.h" | |
48 | |
49 /** @addtogroup STM32F4xx_HAL_Driver | |
50 * @{ | |
51 */ | |
52 | |
53 /** @addtogroup RTC | |
54 * @{ | |
55 */ | |
56 | |
57 /* Exported types ------------------------------------------------------------*/ | |
58 /** @defgroup RTC_Exported_Types RTC Exported Types | |
59 * @{ | |
60 */ | |
61 | |
62 /** | |
63 * @brief HAL State structures definition | |
64 */ | |
65 typedef enum | |
66 { | |
67 HAL_RTC_STATE_RESET = 0x00, /*!< RTC not yet initialized or disabled */ | |
68 HAL_RTC_STATE_READY = 0x01, /*!< RTC initialized and ready for use */ | |
69 HAL_RTC_STATE_BUSY = 0x02, /*!< RTC process is ongoing */ | |
70 HAL_RTC_STATE_TIMEOUT = 0x03, /*!< RTC timeout state */ | |
71 HAL_RTC_STATE_ERROR = 0x04 /*!< RTC error state */ | |
72 | |
73 }HAL_RTCStateTypeDef; | |
74 | |
75 /** | |
76 * @brief RTC Configuration Structure definition | |
77 */ | |
78 typedef struct | |
79 { | |
80 uint32_t HourFormat; /*!< Specifies the RTC Hour Format. | |
81 This parameter can be a value of @ref RTC_Hour_Formats */ | |
82 | |
83 uint32_t AsynchPrediv; /*!< Specifies the RTC Asynchronous Predivider value. | |
84 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F */ | |
85 | |
86 uint32_t SynchPrediv; /*!< Specifies the RTC Synchronous Predivider value. | |
87 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7FFF */ | |
88 | |
89 uint32_t OutPut; /*!< Specifies which signal will be routed to the RTC output. | |
90 This parameter can be a value of @ref RTC_Output_selection_Definitions */ | |
91 | |
92 uint32_t OutPutPolarity; /*!< Specifies the polarity of the output signal. | |
93 This parameter can be a value of @ref RTC_Output_Polarity_Definitions */ | |
94 | |
95 uint32_t OutPutType; /*!< Specifies the RTC Output Pin mode. | |
96 This parameter can be a value of @ref RTC_Output_Type_ALARM_OUT */ | |
97 }RTC_InitTypeDef; | |
98 | |
99 /** | |
100 * @brief RTC Time structure definition | |
101 */ | |
102 typedef struct | |
103 { | |
104 uint8_t Hours; /*!< Specifies the RTC Time Hour. | |
105 This parameter must be a number between Min_Data = 0 and Max_Data = 12 if the RTC_HourFormat_12 is selected. | |
106 This parameter must be a number between Min_Data = 0 and Max_Data = 23 if the RTC_HourFormat_24 is selected */ | |
107 | |
108 uint8_t Minutes; /*!< Specifies the RTC Time Minutes. | |
109 This parameter must be a number between Min_Data = 0 and Max_Data = 59 */ | |
110 | |
111 uint8_t Seconds; /*!< Specifies the RTC Time Seconds. | |
112 This parameter must be a number between Min_Data = 0 and Max_Data = 59 */ | |
113 | |
114 uint32_t SubSeconds; /*!< Specifies the RTC Time SubSeconds. | |
115 This parameter must be a number between Min_Data = 0 and Max_Data = 59 */ | |
116 | |
117 uint8_t TimeFormat; /*!< Specifies the RTC AM/PM Time. | |
118 This parameter can be a value of @ref RTC_AM_PM_Definitions */ | |
119 | |
120 uint32_t DayLightSaving; /*!< Specifies DayLight Save Operation. | |
121 This parameter can be a value of @ref RTC_DayLightSaving_Definitions */ | |
122 | |
123 uint32_t StoreOperation; /*!< Specifies RTC_StoreOperation value to be written in the BCK bit | |
124 in CR register to store the operation. | |
125 This parameter can be a value of @ref RTC_StoreOperation_Definitions */ | |
126 }RTC_TimeTypeDef; | |
127 | |
128 /** | |
129 * @brief RTC Date structure definition | |
130 */ | |
131 typedef struct | |
132 { | |
133 uint8_t WeekDay; /*!< Specifies the RTC Date WeekDay. | |
134 This parameter can be a value of @ref RTC_WeekDay_Definitions */ | |
135 | |
136 uint8_t Month; /*!< Specifies the RTC Date Month (in BCD format). | |
137 This parameter can be a value of @ref RTC_Month_Date_Definitions */ | |
138 | |
139 uint8_t Date; /*!< Specifies the RTC Date. | |
140 This parameter must be a number between Min_Data = 1 and Max_Data = 31 */ | |
141 | |
142 uint8_t Year; /*!< Specifies the RTC Date Year. | |
143 This parameter must be a number between Min_Data = 0 and Max_Data = 99 */ | |
144 | |
145 }RTC_DateTypeDef; | |
146 | |
147 /** | |
148 * @brief RTC Alarm structure definition | |
149 */ | |
150 typedef struct | |
151 { | |
152 RTC_TimeTypeDef AlarmTime; /*!< Specifies the RTC Alarm Time members */ | |
153 | |
154 uint32_t AlarmMask; /*!< Specifies the RTC Alarm Masks. | |
155 This parameter can be a value of @ref RTC_AlarmMask_Definitions */ | |
156 | |
157 uint32_t AlarmSubSecondMask; /*!< Specifies the RTC Alarm SubSeconds Masks. | |
158 This parameter can be a value of @ref RTC_Alarm_Sub_Seconds_Masks_Definitions */ | |
159 | |
160 uint32_t AlarmDateWeekDaySel; /*!< Specifies the RTC Alarm is on Date or WeekDay. | |
161 This parameter can be a value of @ref RTC_AlarmDateWeekDay_Definitions */ | |
162 | |
163 uint8_t AlarmDateWeekDay; /*!< Specifies the RTC Alarm Date/WeekDay. | |
164 If the Alarm Date is selected, this parameter must be set to a value in the 1-31 range. | |
165 If the Alarm WeekDay is selected, this parameter can be a value of @ref RTC_WeekDay_Definitions */ | |
166 | |
167 uint32_t Alarm; /*!< Specifies the alarm . | |
168 This parameter can be a value of @ref RTC_Alarms_Definitions */ | |
169 }RTC_AlarmTypeDef; | |
170 | |
171 /** | |
172 * @brief RTC Handle Structure definition | |
173 */ | |
174 typedef struct | |
175 { | |
176 RTC_TypeDef *Instance; /*!< Register base address */ | |
177 | |
178 RTC_InitTypeDef Init; /*!< RTC required parameters */ | |
179 | |
180 HAL_LockTypeDef Lock; /*!< RTC locking object */ | |
181 | |
182 __IO HAL_RTCStateTypeDef State; /*!< Time communication state */ | |
183 | |
184 }RTC_HandleTypeDef; | |
185 | |
186 /** | |
187 * @} | |
188 */ | |
189 | |
190 /* Exported constants --------------------------------------------------------*/ | |
191 /** @defgroup RTC_Exported_Constants RTC Exported Constants | |
192 * @{ | |
193 */ | |
194 | |
195 /** @defgroup RTC_Hour_Formats RTC Hour Formats | |
196 * @{ | |
197 */ | |
198 #define RTC_HOURFORMAT_24 ((uint32_t)0x00000000) | |
199 #define RTC_HOURFORMAT_12 ((uint32_t)0x00000040) | |
200 /** | |
201 * @} | |
202 */ | |
203 | |
204 /** @defgroup RTC_Output_selection_Definitions RTC Output Selection Definitions | |
205 * @{ | |
206 */ | |
207 #define RTC_OUTPUT_DISABLE ((uint32_t)0x00000000) | |
208 #define RTC_OUTPUT_ALARMA ((uint32_t)0x00200000) | |
209 #define RTC_OUTPUT_ALARMB ((uint32_t)0x00400000) | |
210 #define RTC_OUTPUT_WAKEUP ((uint32_t)0x00600000) | |
211 /** | |
212 * @} | |
213 */ | |
214 | |
215 /** @defgroup RTC_Output_Polarity_Definitions RTC Output Polarity Definitions | |
216 * @{ | |
217 */ | |
218 #define RTC_OUTPUT_POLARITY_HIGH ((uint32_t)0x00000000) | |
219 #define RTC_OUTPUT_POLARITY_LOW ((uint32_t)0x00100000) | |
220 /** | |
221 * @} | |
222 */ | |
223 | |
224 /** @defgroup RTC_Output_Type_ALARM_OUT RTC Output Type ALARM OUT | |
225 * @{ | |
226 */ | |
227 #define RTC_OUTPUT_TYPE_OPENDRAIN ((uint32_t)0x00000000) | |
228 #define RTC_OUTPUT_TYPE_PUSHPULL ((uint32_t)0x00040000) | |
229 /** | |
230 * @} | |
231 */ | |
232 | |
233 /** @defgroup RTC_AM_PM_Definitions RTC AM PM Definitions | |
234 * @{ | |
235 */ | |
236 #define RTC_HOURFORMAT12_AM ((uint8_t)0x00) | |
237 #define RTC_HOURFORMAT12_PM ((uint8_t)0x40) | |
238 /** | |
239 * @} | |
240 */ | |
241 | |
242 /** @defgroup RTC_DayLightSaving_Definitions RTC DayLight Saving Definitions | |
243 * @{ | |
244 */ | |
245 #define RTC_DAYLIGHTSAVING_SUB1H ((uint32_t)0x00020000) | |
246 #define RTC_DAYLIGHTSAVING_ADD1H ((uint32_t)0x00010000) | |
247 #define RTC_DAYLIGHTSAVING_NONE ((uint32_t)0x00000000) | |
248 /** | |
249 * @} | |
250 */ | |
251 | |
252 /** @defgroup RTC_StoreOperation_Definitions RTC Store Operation Definitions | |
253 * @{ | |
254 */ | |
255 #define RTC_STOREOPERATION_RESET ((uint32_t)0x00000000) | |
256 #define RTC_STOREOPERATION_SET ((uint32_t)0x00040000) | |
257 /** | |
258 * @} | |
259 */ | |
260 | |
261 /** @defgroup RTC_Input_parameter_format_definitions RTC Input Parameter Format Definitions | |
262 * @{ | |
263 */ | |
264 #define RTC_FORMAT_BIN ((uint32_t)0x000000000) | |
265 #define RTC_FORMAT_BCD ((uint32_t)0x000000001) | |
266 /** | |
267 * @} | |
268 */ | |
269 | |
270 /** @defgroup RTC_Month_Date_Definitions RTC Month Date Definitions | |
271 * @{ | |
272 */ | |
273 /* Coded in BCD format */ | |
274 #define RTC_MONTH_JANUARY ((uint8_t)0x01) | |
275 #define RTC_MONTH_FEBRUARY ((uint8_t)0x02) | |
276 #define RTC_MONTH_MARCH ((uint8_t)0x03) | |
277 #define RTC_MONTH_APRIL ((uint8_t)0x04) | |
278 #define RTC_MONTH_MAY ((uint8_t)0x05) | |
279 #define RTC_MONTH_JUNE ((uint8_t)0x06) | |
280 #define RTC_MONTH_JULY ((uint8_t)0x07) | |
281 #define RTC_MONTH_AUGUST ((uint8_t)0x08) | |
282 #define RTC_MONTH_SEPTEMBER ((uint8_t)0x09) | |
283 #define RTC_MONTH_OCTOBER ((uint8_t)0x10) | |
284 #define RTC_MONTH_NOVEMBER ((uint8_t)0x11) | |
285 #define RTC_MONTH_DECEMBER ((uint8_t)0x12) | |
286 /** | |
287 * @} | |
288 */ | |
289 | |
290 /** @defgroup RTC_WeekDay_Definitions RTC WeekDay Definitions | |
291 * @{ | |
292 */ | |
293 #define RTC_WEEKDAY_MONDAY ((uint8_t)0x01) | |
294 #define RTC_WEEKDAY_TUESDAY ((uint8_t)0x02) | |
295 #define RTC_WEEKDAY_WEDNESDAY ((uint8_t)0x03) | |
296 #define RTC_WEEKDAY_THURSDAY ((uint8_t)0x04) | |
297 #define RTC_WEEKDAY_FRIDAY ((uint8_t)0x05) | |
298 #define RTC_WEEKDAY_SATURDAY ((uint8_t)0x06) | |
299 #define RTC_WEEKDAY_SUNDAY ((uint8_t)0x07) | |
300 /** | |
301 * @} | |
302 */ | |
303 | |
304 /** @defgroup RTC_AlarmDateWeekDay_Definitions RTC Alarm Date WeekDay Definitions | |
305 * @{ | |
306 */ | |
307 #define RTC_ALARMDATEWEEKDAYSEL_DATE ((uint32_t)0x00000000) | |
308 #define RTC_ALARMDATEWEEKDAYSEL_WEEKDAY ((uint32_t)0x40000000) | |
309 /** | |
310 * @} | |
311 */ | |
312 | |
313 /** @defgroup RTC_AlarmMask_Definitions RTC Alarm Mask Definitions | |
314 * @{ | |
315 */ | |
316 #define RTC_ALARMMASK_NONE ((uint32_t)0x00000000) | |
317 #define RTC_ALARMMASK_DATEWEEKDAY RTC_ALRMAR_MSK4 | |
318 #define RTC_ALARMMASK_HOURS RTC_ALRMAR_MSK3 | |
319 #define RTC_ALARMMASK_MINUTES RTC_ALRMAR_MSK2 | |
320 #define RTC_ALARMMASK_SECONDS RTC_ALRMAR_MSK1 | |
321 #define RTC_ALARMMASK_ALL ((uint32_t)0x80808080) | |
322 /** | |
323 * @} | |
324 */ | |
325 | |
326 /** @defgroup RTC_Alarms_Definitions RTC Alarms Definitions | |
327 * @{ | |
328 */ | |
329 #define RTC_ALARM_A RTC_CR_ALRAE | |
330 #define RTC_ALARM_B RTC_CR_ALRBE | |
331 /** | |
332 * @} | |
333 */ | |
334 | |
335 /** @defgroup RTC_Alarm_Sub_Seconds_Masks_Definitions RTC Alarm Sub Seconds Masks Definitions | |
336 * @{ | |
337 */ | |
338 #define RTC_ALARMSUBSECONDMASK_ALL ((uint32_t)0x00000000) /*!< All Alarm SS fields are masked. | |
339 There is no comparison on sub seconds | |
340 for Alarm */ | |
341 #define RTC_ALARMSUBSECONDMASK_SS14_1 ((uint32_t)0x01000000) /*!< SS[14:1] are don't care in Alarm | |
342 comparison. Only SS[0] is compared. */ | |
343 #define RTC_ALARMSUBSECONDMASK_SS14_2 ((uint32_t)0x02000000) /*!< SS[14:2] are don't care in Alarm | |
344 comparison. Only SS[1:0] are compared */ | |
345 #define RTC_ALARMSUBSECONDMASK_SS14_3 ((uint32_t)0x03000000) /*!< SS[14:3] are don't care in Alarm | |
346 comparison. Only SS[2:0] are compared */ | |
347 #define RTC_ALARMSUBSECONDMASK_SS14_4 ((uint32_t)0x04000000) /*!< SS[14:4] are don't care in Alarm | |
348 comparison. Only SS[3:0] are compared */ | |
349 #define RTC_ALARMSUBSECONDMASK_SS14_5 ((uint32_t)0x05000000) /*!< SS[14:5] are don't care in Alarm | |
350 comparison. Only SS[4:0] are compared */ | |
351 #define RTC_ALARMSUBSECONDMASK_SS14_6 ((uint32_t)0x06000000) /*!< SS[14:6] are don't care in Alarm | |
352 comparison. Only SS[5:0] are compared */ | |
353 #define RTC_ALARMSUBSECONDMASK_SS14_7 ((uint32_t)0x07000000) /*!< SS[14:7] are don't care in Alarm | |
354 comparison. Only SS[6:0] are compared */ | |
355 #define RTC_ALARMSUBSECONDMASK_SS14_8 ((uint32_t)0x08000000) /*!< SS[14:8] are don't care in Alarm | |
356 comparison. Only SS[7:0] are compared */ | |
357 #define RTC_ALARMSUBSECONDMASK_SS14_9 ((uint32_t)0x09000000) /*!< SS[14:9] are don't care in Alarm | |
358 comparison. Only SS[8:0] are compared */ | |
359 #define RTC_ALARMSUBSECONDMASK_SS14_10 ((uint32_t)0x0A000000) /*!< SS[14:10] are don't care in Alarm | |
360 comparison. Only SS[9:0] are compared */ | |
361 #define RTC_ALARMSUBSECONDMASK_SS14_11 ((uint32_t)0x0B000000) /*!< SS[14:11] are don't care in Alarm | |
362 comparison. Only SS[10:0] are compared */ | |
363 #define RTC_ALARMSUBSECONDMASK_SS14_12 ((uint32_t)0x0C000000) /*!< SS[14:12] are don't care in Alarm | |
364 comparison.Only SS[11:0] are compared */ | |
365 #define RTC_ALARMSUBSECONDMASK_SS14_13 ((uint32_t)0x0D000000) /*!< SS[14:13] are don't care in Alarm | |
366 comparison. Only SS[12:0] are compared */ | |
367 #define RTC_ALARMSUBSECONDMASK_SS14 ((uint32_t)0x0E000000) /*!< SS[14] is don't care in Alarm | |
368 comparison.Only SS[13:0] are compared */ | |
369 #define RTC_ALARMSUBSECONDMASK_NONE ((uint32_t)0x0F000000) /*!< SS[14:0] are compared and must match | |
370 to activate alarm. */ | |
371 /** | |
372 * @} | |
373 */ | |
374 | |
375 /** @defgroup RTC_Interrupts_Definitions RTC Interrupts Definitions | |
376 * @{ | |
377 */ | |
378 #define RTC_IT_TS ((uint32_t)0x00008000) | |
379 #define RTC_IT_WUT ((uint32_t)0x00004000) | |
380 #define RTC_IT_ALRB ((uint32_t)0x00002000) | |
381 #define RTC_IT_ALRA ((uint32_t)0x00001000) | |
382 #define RTC_IT_TAMP ((uint32_t)0x00000004) /* Used only to Enable the Tamper Interrupt */ | |
383 #define RTC_IT_TAMP1 ((uint32_t)0x00020000) | |
384 #define RTC_IT_TAMP2 ((uint32_t)0x00040000) | |
385 /** | |
386 * @} | |
387 */ | |
388 | |
389 /** @defgroup RTC_Flags_Definitions RTC Flags Definitions | |
390 * @{ | |
391 */ | |
392 #define RTC_FLAG_RECALPF ((uint32_t)0x00010000) | |
393 #define RTC_FLAG_TAMP2F ((uint32_t)0x00004000) | |
394 #define RTC_FLAG_TAMP1F ((uint32_t)0x00002000) | |
395 #define RTC_FLAG_TSOVF ((uint32_t)0x00001000) | |
396 #define RTC_FLAG_TSF ((uint32_t)0x00000800) | |
397 #define RTC_FLAG_WUTF ((uint32_t)0x00000400) | |
398 #define RTC_FLAG_ALRBF ((uint32_t)0x00000200) | |
399 #define RTC_FLAG_ALRAF ((uint32_t)0x00000100) | |
400 #define RTC_FLAG_INITF ((uint32_t)0x00000040) | |
401 #define RTC_FLAG_RSF ((uint32_t)0x00000020) | |
402 #define RTC_FLAG_INITS ((uint32_t)0x00000010) | |
403 #define RTC_FLAG_SHPF ((uint32_t)0x00000008) | |
404 #define RTC_FLAG_WUTWF ((uint32_t)0x00000004) | |
405 #define RTC_FLAG_ALRBWF ((uint32_t)0x00000002) | |
406 #define RTC_FLAG_ALRAWF ((uint32_t)0x00000001) | |
407 /** | |
408 * @} | |
409 */ | |
410 | |
411 /** | |
412 * @} | |
413 */ | |
414 | |
415 /* Exported macro ------------------------------------------------------------*/ | |
416 /** @defgroup RTC_Exported_Macros RTC Exported Macros | |
417 * @{ | |
418 */ | |
419 | |
420 /** @brief Reset RTC handle state | |
421 * @param __HANDLE__: specifies the RTC handle. | |
422 * @retval None | |
423 */ | |
424 #define __HAL_RTC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RTC_STATE_RESET) | |
425 | |
426 /** | |
427 * @brief Disable the write protection for RTC registers. | |
428 * @param __HANDLE__: specifies the RTC handle. | |
429 * @retval None | |
430 */ | |
431 #define __HAL_RTC_WRITEPROTECTION_DISABLE(__HANDLE__) \ | |
432 do{ \ | |
433 (__HANDLE__)->Instance->WPR = 0xCA; \ | |
434 (__HANDLE__)->Instance->WPR = 0x53; \ | |
435 } while(0) | |
436 | |
437 /** | |
438 * @brief Enable the write protection for RTC registers. | |
439 * @param __HANDLE__: specifies the RTC handle. | |
440 * @retval None | |
441 */ | |
442 #define __HAL_RTC_WRITEPROTECTION_ENABLE(__HANDLE__) \ | |
443 do{ \ | |
444 (__HANDLE__)->Instance->WPR = 0xFF; \ | |
445 } while(0) | |
446 | |
447 /** | |
448 * @brief Enable the RTC ALARMA peripheral. | |
449 * @param __HANDLE__: specifies the RTC handle. | |
450 * @retval None | |
451 */ | |
452 #define __HAL_RTC_ALARMA_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_ALRAE)) | |
453 | |
454 /** | |
455 * @brief Disable the RTC ALARMA peripheral. | |
456 * @param __HANDLE__: specifies the RTC handle. | |
457 * @retval None | |
458 */ | |
459 #define __HAL_RTC_ALARMA_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ALRAE)) | |
460 | |
461 /** | |
462 * @brief Enable the RTC ALARMB peripheral. | |
463 * @param __HANDLE__: specifies the RTC handle. | |
464 * @retval None | |
465 */ | |
466 #define __HAL_RTC_ALARMB_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= (RTC_CR_ALRBE)) | |
467 | |
468 /** | |
469 * @brief Disable the RTC ALARMB peripheral. | |
470 * @param __HANDLE__: specifies the RTC handle. | |
471 * @retval None | |
472 */ | |
473 #define __HAL_RTC_ALARMB_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(RTC_CR_ALRBE)) | |
474 | |
475 /** | |
476 * @brief Enable the RTC Alarm interrupt. | |
477 * @param __HANDLE__: specifies the RTC handle. | |
478 * @param __INTERRUPT__: specifies the RTC Alarm interrupt sources to be enabled or disabled. | |
479 * This parameter can be any combination of the following values: | |
480 * @arg RTC_IT_ALRA: Alarm A interrupt | |
481 * @arg RTC_IT_ALRB: Alarm B interrupt | |
482 * @retval None | |
483 */ | |
484 #define __HAL_RTC_ALARM_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR |= (__INTERRUPT__)) | |
485 | |
486 /** | |
487 * @brief Disable the RTC Alarm interrupt. | |
488 * @param __HANDLE__: specifies the RTC handle. | |
489 * @param __INTERRUPT__: specifies the RTC Alarm interrupt sources to be enabled or disabled. | |
490 * This parameter can be any combination of the following values: | |
491 * @arg RTC_IT_ALRA: Alarm A interrupt | |
492 * @arg RTC_IT_ALRB: Alarm B interrupt | |
493 * @retval None | |
494 */ | |
495 #define __HAL_RTC_ALARM_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__)) | |
496 | |
497 /** | |
498 * @brief Check whether the specified RTC Alarm interrupt has occurred or not. | |
499 * @param __HANDLE__: specifies the RTC handle. | |
500 * @param __INTERRUPT__: specifies the RTC Alarm interrupt to check. | |
501 * This parameter can be: | |
502 * @arg RTC_IT_ALRA: Alarm A interrupt | |
503 * @arg RTC_IT_ALRB: Alarm B interrupt | |
504 * @retval None | |
505 */ | |
506 #define __HAL_RTC_ALARM_GET_IT(__HANDLE__, __INTERRUPT__) ((((((__HANDLE__)->Instance->ISR)& ((__INTERRUPT__)>> 4)) & 0x0000FFFF) != RESET)? SET : RESET) | |
507 | |
508 /** | |
509 * @brief Get the selected RTC Alarm's flag status. | |
510 * @param __HANDLE__: specifies the RTC handle. | |
511 * @param __FLAG__: specifies the RTC Alarm Flag to check. | |
512 * This parameter can be: | |
513 * @arg RTC_FLAG_ALRAF | |
514 * @arg RTC_FLAG_ALRBF | |
515 * @arg RTC_FLAG_ALRAWF | |
516 * @arg RTC_FLAG_ALRBWF | |
517 * @retval None | |
518 */ | |
519 #define __HAL_RTC_ALARM_GET_FLAG(__HANDLE__, __FLAG__) (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET) | |
520 | |
521 /** | |
522 * @brief Clear the RTC Alarm's pending flags. | |
523 * @param __HANDLE__: specifies the RTC handle. | |
524 * @param __FLAG__: specifies the RTC Alarm Flag sources to be enabled or disabled. | |
525 * This parameter can be: | |
526 * @arg RTC_FLAG_ALRAF | |
527 * @arg RTC_FLAG_ALRBF | |
528 * @retval None | |
529 */ | |
530 #define __HAL_RTC_ALARM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~(((__FLAG__) | RTC_ISR_INIT)& 0x0000FFFF)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT)) | |
531 | |
532 | |
533 /** | |
534 * @brief Check whether the specified RTC Alarm interrupt has been enabled or not. | |
535 * @param __HANDLE__: specifies the RTC handle. | |
536 * @param __INTERRUPT__: specifies the RTC Alarm interrupt sources to check. | |
537 * This parameter can be: | |
538 * @arg RTC_IT_ALRA: Alarm A interrupt | |
539 * @arg RTC_IT_ALRB: Alarm B interrupt | |
540 * @retval None | |
541 */ | |
542 #define __HAL_RTC_ALARM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET) | |
543 | |
544 /** | |
545 * @brief Enable interrupt on the RTC Alarm associated Exti line. | |
546 * @retval None | |
547 */ | |
548 #define __HAL_RTC_ALARM_EXTI_ENABLE_IT() (EXTI->IMR |= RTC_EXTI_LINE_ALARM_EVENT) | |
549 | |
550 /** | |
551 * @brief Disable interrupt on the RTC Alarm associated Exti line. | |
552 * @retval None | |
553 */ | |
554 #define __HAL_RTC_ALARM_EXTI_DISABLE_IT() (EXTI->IMR &= ~(RTC_EXTI_LINE_ALARM_EVENT)) | |
555 | |
556 /** | |
557 * @brief Enable event on the RTC Alarm associated Exti line. | |
558 * @retval None. | |
559 */ | |
560 #define __HAL_RTC_ALARM_EXTI_ENABLE_EVENT() (EXTI->EMR |= RTC_EXTI_LINE_ALARM_EVENT) | |
561 | |
562 /** | |
563 * @brief Disable event on the RTC Alarm associated Exti line. | |
564 * @retval None. | |
565 */ | |
566 #define __HAL_RTC_ALARM_EXTI_DISABLE_EVENT() (EXTI->EMR &= ~(RTC_EXTI_LINE_ALARM_EVENT)) | |
567 | |
568 /** | |
569 * @brief Enable falling edge trigger on the RTC Alarm associated Exti line. | |
570 * @retval None. | |
571 */ | |
572 #define __HAL_RTC_ALARM_EXTI_ENABLE_FALLING_EDGE() (EXTI->FTSR |= RTC_EXTI_LINE_ALARM_EVENT) | |
573 | |
574 /** | |
575 * @brief Disable falling edge trigger on the RTC Alarm associated Exti line. | |
576 * @retval None. | |
577 */ | |
578 #define __HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE() (EXTI->FTSR &= ~(RTC_EXTI_LINE_ALARM_EVENT)) | |
579 | |
580 /** | |
581 * @brief Enable rising edge trigger on the RTC Alarm associated Exti line. | |
582 * @retval None. | |
583 */ | |
584 #define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE() (EXTI->RTSR |= RTC_EXTI_LINE_ALARM_EVENT) | |
585 | |
586 /** | |
587 * @brief Disable rising edge trigger on the RTC Alarm associated Exti line. | |
588 * @retval None. | |
589 */ | |
590 #define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE() (EXTI->RTSR &= ~(RTC_EXTI_LINE_ALARM_EVENT)) | |
591 | |
592 /** | |
593 * @brief Enable rising & falling edge trigger on the RTC Alarm associated Exti line. | |
594 * @retval None. | |
595 */ | |
596 #define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_ALARM_EXTI_ENABLE_FALLING_EDGE(); | |
597 | |
598 /** | |
599 * @brief Disable rising & falling edge trigger on the RTC Alarm associated Exti line. | |
600 * @retval None. | |
601 */ | |
602 #define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_FALLING_EDGE() __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE(); | |
603 | |
604 /** | |
605 * @brief Check whether the RTC Alarm associated Exti line interrupt flag is set or not. | |
606 * @retval Line Status. | |
607 */ | |
608 #define __HAL_RTC_ALARM_EXTI_GET_FLAG() (EXTI->PR & RTC_EXTI_LINE_ALARM_EVENT) | |
609 | |
610 /** | |
611 * @brief Clear the RTC Alarm associated Exti line flag. | |
612 * @retval None. | |
613 */ | |
614 #define __HAL_RTC_ALARM_EXTI_CLEAR_FLAG() (EXTI->PR = RTC_EXTI_LINE_ALARM_EVENT) | |
615 | |
616 /** | |
617 * @brief Generate a Software interrupt on RTC Alarm associated Exti line. | |
618 * @retval None. | |
619 */ | |
620 #define __HAL_RTC_ALARM_EXTI_GENERATE_SWIT() (EXTI->SWIER |= RTC_EXTI_LINE_ALARM_EVENT) | |
621 /** | |
622 * @} | |
623 */ | |
624 | |
625 /* Include RTC HAL Extension module */ | |
626 #include "stm32f4xx_hal_rtc_ex.h" | |
627 | |
628 /* Exported functions --------------------------------------------------------*/ | |
629 /** @addtogroup RTC_Exported_Functions | |
630 * @{ | |
631 */ | |
632 | |
633 /** @addtogroup RTC_Exported_Functions_Group1 | |
634 * @{ | |
635 */ | |
636 /* Initialization and de-initialization functions ****************************/ | |
637 HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc); | |
638 HAL_StatusTypeDef HAL_RTC_DeInit(RTC_HandleTypeDef *hrtc); | |
639 void HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc); | |
640 void HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc); | |
641 /** | |
642 * @} | |
643 */ | |
644 | |
645 /** @addtogroup RTC_Exported_Functions_Group2 | |
646 * @{ | |
647 */ | |
648 /* RTC Time and Date functions ************************************************/ | |
649 HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); | |
650 HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); | |
651 HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format); | |
652 HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format); | |
653 /** | |
654 * @} | |
655 */ | |
656 | |
657 /** @addtogroup RTC_Exported_Functions_Group3 | |
658 * @{ | |
659 */ | |
660 /* RTC Alarm functions ********************************************************/ | |
661 HAL_StatusTypeDef HAL_RTC_SetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format); | |
662 HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format); | |
663 HAL_StatusTypeDef HAL_RTC_DeactivateAlarm(RTC_HandleTypeDef *hrtc, uint32_t Alarm); | |
664 HAL_StatusTypeDef HAL_RTC_GetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, uint32_t Format); | |
665 void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc); | |
666 HAL_StatusTypeDef HAL_RTC_PollForAlarmAEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout); | |
667 void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc); | |
668 /** | |
669 * @} | |
670 */ | |
671 | |
672 /** @addtogroup RTC_Exported_Functions_Group4 | |
673 * @{ | |
674 */ | |
675 /* Peripheral Control functions ***********************************************/ | |
676 HAL_StatusTypeDef HAL_RTC_WaitForSynchro(RTC_HandleTypeDef* hrtc); | |
677 /** | |
678 * @} | |
679 */ | |
680 | |
681 /** @addtogroup RTC_Exported_Functions_Group5 | |
682 * @{ | |
683 */ | |
684 /* Peripheral State functions *************************************************/ | |
685 HAL_RTCStateTypeDef HAL_RTC_GetState(RTC_HandleTypeDef *hrtc); | |
686 /** | |
687 * @} | |
688 */ | |
689 | |
690 /** | |
691 * @} | |
692 */ | |
693 | |
694 /* Private types -------------------------------------------------------------*/ | |
695 /* Private variables ---------------------------------------------------------*/ | |
696 /* Private constants ---------------------------------------------------------*/ | |
697 /** @defgroup RTC_Private_Constants RTC Private Constants | |
698 * @{ | |
699 */ | |
700 /* Masks Definition */ | |
701 #define RTC_TR_RESERVED_MASK ((uint32_t)0x007F7F7F) | |
702 #define RTC_DR_RESERVED_MASK ((uint32_t)0x00FFFF3F) | |
703 #define RTC_INIT_MASK ((uint32_t)0xFFFFFFFF) | |
704 #define RTC_RSF_MASK ((uint32_t)0xFFFFFF5F) | |
705 #define RTC_FLAGS_MASK ((uint32_t)(RTC_FLAG_TSOVF | RTC_FLAG_TSF | RTC_FLAG_WUTF | \ | |
706 RTC_FLAG_ALRBF | RTC_FLAG_ALRAF | RTC_FLAG_INITF | \ | |
707 RTC_FLAG_RSF | RTC_FLAG_INITS | RTC_FLAG_WUTWF | \ | |
708 RTC_FLAG_ALRBWF | RTC_FLAG_ALRAWF | RTC_FLAG_TAMP1F | \ | |
709 RTC_FLAG_RECALPF | RTC_FLAG_SHPF)) | |
710 | |
711 #define RTC_TIMEOUT_VALUE 1000 | |
712 | |
713 #define RTC_EXTI_LINE_ALARM_EVENT ((uint32_t)0x00020000) /*!< External interrupt line 17 Connected to the RTC Alarm event */ | |
714 /** | |
715 * @} | |
716 */ | |
717 | |
718 /* Private macros ------------------------------------------------------------*/ | |
719 /** @defgroup RTC_Private_Macros RTC Private Macros | |
720 * @{ | |
721 */ | |
722 | |
723 /** @defgroup RTC_IS_RTC_Definitions RTC Private macros to check input parameters | |
724 * @{ | |
725 */ | |
726 #define IS_RTC_HOUR_FORMAT(FORMAT) (((FORMAT) == RTC_HOURFORMAT_12) || \ | |
727 ((FORMAT) == RTC_HOURFORMAT_24)) | |
728 #define IS_RTC_OUTPUT(OUTPUT) (((OUTPUT) == RTC_OUTPUT_DISABLE) || \ | |
729 ((OUTPUT) == RTC_OUTPUT_ALARMA) || \ | |
730 ((OUTPUT) == RTC_OUTPUT_ALARMB) || \ | |
731 ((OUTPUT) == RTC_OUTPUT_WAKEUP)) | |
732 #define IS_RTC_OUTPUT_POL(POL) (((POL) == RTC_OUTPUT_POLARITY_HIGH) || \ | |
733 ((POL) == RTC_OUTPUT_POLARITY_LOW)) | |
734 #define IS_RTC_OUTPUT_TYPE(TYPE) (((TYPE) == RTC_OUTPUT_TYPE_OPENDRAIN) || \ | |
735 ((TYPE) == RTC_OUTPUT_TYPE_PUSHPULL)) | |
736 #define IS_RTC_HOUR12(HOUR) (((HOUR) > (uint32_t)0) && ((HOUR) <= (uint32_t)12)) | |
737 #define IS_RTC_HOUR24(HOUR) ((HOUR) <= (uint32_t)23) | |
738 #define IS_RTC_ASYNCH_PREDIV(PREDIV) ((PREDIV) <= (uint32_t)0x7F) | |
739 #define IS_RTC_SYNCH_PREDIV(PREDIV) ((PREDIV) <= (uint32_t)0x7FFF) | |
740 #define IS_RTC_MINUTES(MINUTES) ((MINUTES) <= (uint32_t)59) | |
741 #define IS_RTC_SECONDS(SECONDS) ((SECONDS) <= (uint32_t)59) | |
742 | |
743 #define IS_RTC_HOURFORMAT12(PM) (((PM) == RTC_HOURFORMAT12_AM) || ((PM) == RTC_HOURFORMAT12_PM)) | |
744 #define IS_RTC_DAYLIGHT_SAVING(SAVE) (((SAVE) == RTC_DAYLIGHTSAVING_SUB1H) || \ | |
745 ((SAVE) == RTC_DAYLIGHTSAVING_ADD1H) || \ | |
746 ((SAVE) == RTC_DAYLIGHTSAVING_NONE)) | |
747 #define IS_RTC_STORE_OPERATION(OPERATION) (((OPERATION) == RTC_STOREOPERATION_RESET) || \ | |
748 ((OPERATION) == RTC_STOREOPERATION_SET)) | |
749 #define IS_RTC_FORMAT(FORMAT) (((FORMAT) == RTC_FORMAT_BIN) || ((FORMAT) == RTC_FORMAT_BCD)) | |
750 #define IS_RTC_YEAR(YEAR) ((YEAR) <= (uint32_t)99) | |
751 #define IS_RTC_MONTH(MONTH) (((MONTH) >= (uint32_t)1) && ((MONTH) <= (uint32_t)12)) | |
752 #define IS_RTC_DATE(DATE) (((DATE) >= (uint32_t)1) && ((DATE) <= (uint32_t)31)) | |
753 #define IS_RTC_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_WEEKDAY_MONDAY) || \ | |
754 ((WEEKDAY) == RTC_WEEKDAY_TUESDAY) || \ | |
755 ((WEEKDAY) == RTC_WEEKDAY_WEDNESDAY) || \ | |
756 ((WEEKDAY) == RTC_WEEKDAY_THURSDAY) || \ | |
757 ((WEEKDAY) == RTC_WEEKDAY_FRIDAY) || \ | |
758 ((WEEKDAY) == RTC_WEEKDAY_SATURDAY) || \ | |
759 ((WEEKDAY) == RTC_WEEKDAY_SUNDAY)) | |
760 #define IS_RTC_ALARM_DATE_WEEKDAY_DATE(DATE) (((DATE) >(uint32_t) 0) && ((DATE) <= (uint32_t)31)) | |
761 #define IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_WEEKDAY_MONDAY) || \ | |
762 ((WEEKDAY) == RTC_WEEKDAY_TUESDAY) || \ | |
763 ((WEEKDAY) == RTC_WEEKDAY_WEDNESDAY) || \ | |
764 ((WEEKDAY) == RTC_WEEKDAY_THURSDAY) || \ | |
765 ((WEEKDAY) == RTC_WEEKDAY_FRIDAY) || \ | |
766 ((WEEKDAY) == RTC_WEEKDAY_SATURDAY) || \ | |
767 ((WEEKDAY) == RTC_WEEKDAY_SUNDAY)) | |
768 #define IS_RTC_ALARM_DATE_WEEKDAY_SEL(SEL) (((SEL) == RTC_ALARMDATEWEEKDAYSEL_DATE) || \ | |
769 ((SEL) == RTC_ALARMDATEWEEKDAYSEL_WEEKDAY)) | |
770 #define IS_RTC_ALARM_MASK(MASK) (((MASK) & 0x7F7F7F7F) == (uint32_t)RESET) | |
771 #define IS_RTC_ALARM(ALARM) (((ALARM) == RTC_ALARM_A) || ((ALARM) == RTC_ALARM_B)) | |
772 #define IS_RTC_ALARM_SUB_SECOND_VALUE(VALUE) ((VALUE) <= (uint32_t)0x00007FFF) | |
773 | |
774 #define IS_RTC_ALARM_SUB_SECOND_MASK(MASK) (((MASK) == RTC_ALARMSUBSECONDMASK_ALL) || \ | |
775 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_1) || \ | |
776 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_2) || \ | |
777 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_3) || \ | |
778 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_4) || \ | |
779 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_5) || \ | |
780 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_6) || \ | |
781 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_7) || \ | |
782 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_8) || \ | |
783 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_9) || \ | |
784 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_10) || \ | |
785 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_11) || \ | |
786 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_12) || \ | |
787 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_13) || \ | |
788 ((MASK) == RTC_ALARMSUBSECONDMASK_SS14) || \ | |
789 ((MASK) == RTC_ALARMSUBSECONDMASK_NONE)) | |
790 /** | |
791 * @} | |
792 */ | |
793 | |
794 /** | |
795 * @} | |
796 */ | |
797 | |
798 /* Private functions ---------------------------------------------------------*/ | |
799 /** @defgroup RTC_Private_Functions RTC Private Functions | |
800 * @{ | |
801 */ | |
802 HAL_StatusTypeDef RTC_EnterInitMode(RTC_HandleTypeDef* hrtc); | |
803 uint8_t RTC_ByteToBcd2(uint8_t Value); | |
804 uint8_t RTC_Bcd2ToByte(uint8_t Value); | |
805 /** | |
806 * @} | |
807 */ | |
808 | |
809 /** | |
810 * @} | |
811 */ | |
812 | |
813 /** | |
814 * @} | |
815 */ | |
816 | |
817 #ifdef __cplusplus | |
818 } | |
819 #endif | |
820 | |
821 #endif /* __STM32F4xx_HAL_RTC_H */ | |
822 | |
823 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |