1 /** 2 ****************************************************************************** 3 * @file stm32u0xx_hal_rtc.h 4 * @author GPM Application Team 5 * @brief Header file of RTC HAL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2023 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef __STM32U0xx_HAL_RTC_H 21 #define __STM32U0xx_HAL_RTC_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32u0xx_hal_def.h" 29 30 /** @addtogroup STM32U0xx_HAL_Driver 31 * @{ 32 */ 33 34 /** @defgroup RTC RTC 35 * @{ 36 */ 37 38 /* Exported types ------------------------------------------------------------*/ 39 /** @defgroup RTC_Exported_Types RTC Exported Types 40 * @{ 41 */ 42 43 /** 44 * @brief HAL State structures definition 45 */ 46 typedef enum 47 { 48 HAL_RTC_STATE_RESET = 0x00U, /*!< RTC not yet initialized or disabled */ 49 HAL_RTC_STATE_READY = 0x01U, /*!< RTC initialized and ready for use */ 50 HAL_RTC_STATE_BUSY = 0x02U, /*!< RTC process is ongoing */ 51 HAL_RTC_STATE_TIMEOUT = 0x03U, /*!< RTC timeout state */ 52 HAL_RTC_STATE_ERROR = 0x04U /*!< RTC error state */ 53 54 } HAL_RTCStateTypeDef; 55 56 /** 57 * @brief RTC Configuration Structure definition 58 */ 59 typedef struct 60 { 61 uint32_t HourFormat; /*!< Specifies the RTC Hour Format. 62 This parameter can be a value of @ref RTC_Hour_Formats */ 63 64 uint32_t AsynchPrediv; /*!< Specifies the RTC Asynchronous Predivider value. 65 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7F */ 66 67 uint32_t SynchPrediv; /*!< Specifies the RTC Synchronous Predivider value. 68 This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7FFF */ 69 70 uint32_t OutPut; /*!< Specifies which signal will be routed to the RTC output. 71 This parameter can be a value of @ref RTCEx_Output_selection_Definitions */ 72 73 uint32_t OutPutRemap; /*!< Specifies the remap for RTC output. 74 This parameter can be a value of @ref RTC_Output_ALARM_OUT_Remap */ 75 76 uint32_t OutPutPolarity; /*!< Specifies the polarity of the output signal. 77 This parameter can be a value of @ref RTC_Output_Polarity_Definitions */ 78 79 uint32_t OutPutType; /*!< Specifies the RTC Output Pin mode. 80 This parameter can be a value of @ref RTC_Output_Type_ALARM_OUT */ 81 82 uint32_t OutPutPullUp; /*!< Specifies the RTC Output Pull-Up mode. 83 This parameter can be a value of @ref RTC_Output_PullUp_ALARM_OUT */ 84 85 uint32_t BinMode; /*!< Specifies the RTC binary mode. 86 This parameter can be a value of @ref RTCEx_Binary_Mode */ 87 88 uint32_t BinMixBcdU; /*!< Specifies the BCD calendar update if and only if BinMode = RTC_BINARY_MIX. 89 This parameter can be a value of @ref RTCEx_Binary_mix_BCDU */ 90 } RTC_InitTypeDef; 91 92 /** 93 * @brief RTC Time structure definition 94 */ 95 typedef struct 96 { 97 uint8_t Hours; /*!< Specifies the RTC Time Hour. 98 This parameter must be a number between Min_Data = 0 and Max_Data = 12 99 if the RTC_HourFormat_12 is selected. 100 This parameter must be a number between Min_Data = 0 and Max_Data = 23 101 if the RTC_HourFormat_24 is selected */ 102 103 uint8_t Minutes; /*!< Specifies the RTC Time Minutes. 104 This parameter must be a number between Min_Data = 0 and Max_Data = 59 */ 105 106 uint8_t Seconds; /*!< Specifies the RTC Time Seconds. 107 This parameter must be a number between Min_Data = 0 and Max_Data = 59 */ 108 109 uint8_t TimeFormat; /*!< Specifies the RTC AM/PM Time. 110 This parameter can be a value of @ref RTC_AM_PM_Definitions */ 111 112 uint32_t SubSeconds; /*!< Specifies the RTC_SSR RTC Sub Second register content. 113 This field is not used by HAL_RTC_SetTime. 114 If the free running 32 bit counter is not activated (mode binary none) 115 - This parameter corresponds to a time unit range between [0-1] Second 116 with [1 Sec / SecondFraction +1] granularity 117 else 118 - This parameter corresponds to the free running 32 bit counter. */ 119 120 uint32_t SecondFraction; /*!< Specifies the range or granularity of Sub Second register content 121 corresponding to Synchronous pre-scaler factor value (PREDIV_S) 122 This parameter corresponds to a time unit range between [0-1] Second 123 with [1 Sec / SecondFraction +1] granularity. 124 This field will be used only by HAL_RTC_GetTime function */ 125 126 uint32_t DayLightSaving; /*!< This interface is deprecated. To manage Daylight 127 Saving Time, please use HAL_RTC_DST_xxx functions */ 128 129 uint32_t StoreOperation; /*!< This interface is deprecated. To manage Daylight 130 Saving Time, please use HAL_RTC_DST_xxx functions */ 131 } RTC_TimeTypeDef; 132 133 /** 134 * @brief RTC Date structure definition 135 */ 136 typedef struct 137 { 138 uint8_t WeekDay; /*!< Specifies the RTC Date WeekDay. 139 This parameter can be a value of @ref RTC_WeekDay_Definitions */ 140 141 uint8_t Month; /*!< Specifies the RTC Date Month (in BCD format). 142 This parameter can be a value of @ref RTC_Month_Date_Definitions */ 143 144 uint8_t Date; /*!< Specifies the RTC Date. 145 This parameter must be a number between Min_Data = 1 and Max_Data = 31 */ 146 147 uint8_t Year; /*!< Specifies the RTC Date Year. 148 This parameter must be a number between Min_Data = 0 and Max_Data = 99 */ 149 150 } RTC_DateTypeDef; 151 152 /** 153 * @brief RTC Alarm structure definition 154 */ 155 typedef struct 156 { 157 RTC_TimeTypeDef AlarmTime; /*!< Specifies the RTC Alarm Time members */ 158 159 uint32_t AlarmMask; /*!< Specifies the RTC Alarm Masks. 160 This parameter can be a value of @ref RTC_AlarmMask_Definitions */ 161 162 uint32_t AlarmSubSecondMask; /*!< Specifies the RTC Alarm SubSeconds Masks. 163 if Binary mode is RTC_BINARY_ONLY or is RTC_BINARY_MIX 164 This parameter can be a value of 165 @ref RTCEx_Alarm_Sub_Seconds_binary_Masks_Definitions 166 else if Binary mode is RTC_BINARY_NONE 167 This parameter can be a value of @ref RTC_Alarm_Sub_Seconds_Masks_Definitions */ 168 169 uint32_t BinaryAutoClr; /*!< Clear synchronously counter (RTC_SSR) on binary alarm. 170 RTC_ALARMSUBSECONDBIN_AUTOCLR_YES must only be used if Binary mode is 171 RTC_BINARY_ONLY 172 This parameter can be a value of 173 @ref RTCEx_Alarm_Sub_Seconds_binary_Clear_Definitions */ 174 175 uint32_t AlarmDateWeekDaySel; /*!< Specifies the RTC Alarm is on Date or WeekDay. 176 This parameter can be a value of @ref RTC_AlarmDateWeekDay_Definitions */ 177 178 uint8_t AlarmDateWeekDay; /*!< Specifies the RTC Alarm Date/WeekDay. 179 If the Alarm Date is selected, this parameter must be set to 180 a value in the 1-31 range. 181 If the Alarm WeekDay is selected, this parameter can be a value of 182 @ref RTC_WeekDay_Definitions */ 183 184 uint32_t FlagAutoClr; /*!< Specifies the alarm trigger generation. This feature is meaningful to avoid any 185 RTC software execution after configuration. 186 When FlagAutoClr is set in interrupt mode, EXTI is configured as EVENT instead of 187 interrupt to avoid useless IRQ handler execution. 188 This parameter can be a value of @ref RTC_ALARM_Flag_AutoClear_Definitions */ 189 190 uint32_t Alarm; /*!< Specifies the alarm . 191 This parameter can be a value of @ref RTC_Alarms_Definitions */ 192 } RTC_AlarmTypeDef; 193 194 /** 195 * @brief RTC Handle Structure definition 196 */ 197 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1) 198 typedef struct __RTC_HandleTypeDef 199 #else 200 typedef struct 201 #endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */ 202 { 203 RTC_TypeDef *Instance; /*!< Legacy register base address. Not used anymore, the driver directly uses 204 cmsis base address */ 205 206 RTC_InitTypeDef Init; /*!< RTC required parameters */ 207 208 HAL_LockTypeDef Lock; /*!< RTC locking object */ 209 210 __IO HAL_RTCStateTypeDef State; /*!< Time communication state */ 211 212 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1) 213 void (* AlarmAEventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Alarm A Event callback */ 214 void (* AlarmBEventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Alarm B Event callback */ 215 void (* TimeStampEventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC TimeStamp Event callback */ 216 void (* WakeUpTimerEventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC WakeUpTimer Event callback */ 217 void (* SSRUEventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC SSRU Event callback */ 218 void (* Tamper1EventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Tamper 1 Event callback */ 219 void (* Tamper2EventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Tamper 2 Event callback */ 220 void (* Tamper3EventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Tamper 3 Event callback */ 221 void (* Tamper4EventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Tamper 4 Event callback */ 222 void (* Tamper5EventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Tamper 5 Event callback */ 223 void (* InternalTamper3EventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Internal Tamper 3 Event callback */ 224 void (* InternalTamper4EventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Internal Tamper 4 Event callback */ 225 void (* InternalTamper5EventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Internal Tamper 5 Event callback */ 226 void (* InternalTamper6EventCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Internal Tamper 6 Event callback */ 227 void (* MspInitCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Msp Init callback */ 228 void (* MspDeInitCallback)(struct __RTC_HandleTypeDef *hrtc); /*!< RTC Msp DeInit callback */ 229 230 #endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */ 231 232 } RTC_HandleTypeDef; 233 234 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1) 235 /** 236 * @brief HAL RTC Callback ID enumeration definition 237 */ 238 typedef enum 239 { 240 HAL_RTC_ALARM_A_EVENT_CB_ID = 0x00U, /*!< RTC Alarm A Event Callback ID */ 241 HAL_RTC_ALARM_B_EVENT_CB_ID = 0x01U, /*!< RTC Alarm B Event Callback ID */ 242 HAL_RTC_TIMESTAMP_EVENT_CB_ID = 0x02U, /*!< RTC TimeStamp Event Callback ID */ 243 HAL_RTC_WAKEUPTIMER_EVENT_CB_ID = 0x03U, /*!< RTC WakeUp Timer Event Callback ID */ 244 HAL_RTC_SSRU_EVENT_CB_ID = 0x04U, /*!< RTC SSRU Event Callback ID */ 245 HAL_RTC_TAMPER1_EVENT_CB_ID = 0x05U, /*!< RTC Tamper 1 Callback ID */ 246 HAL_RTC_TAMPER2_EVENT_CB_ID = 0x06U, /*!< RTC Tamper 2 Callback ID */ 247 HAL_RTC_TAMPER3_EVENT_CB_ID = 0x07U, /*!< RTC Tamper 3 Callback ID */ 248 HAL_RTC_TAMPER4_EVENT_CB_ID = 0x08U, /*!< RTC Tamper 4 Callback ID */ 249 HAL_RTC_TAMPER5_EVENT_CB_ID = 0x09U, /*!< RTC Tamper 5 Callback ID */ 250 HAL_RTC_INTERNAL_TAMPER3_EVENT_CB_ID = 0x0AU, /*!< RTC Internal Tamper 3 Callback ID */ 251 HAL_RTC_INTERNAL_TAMPER4_EVENT_CB_ID = 0x0BU, /*!< RTC Internal Tamper 4 Callback ID */ 252 HAL_RTC_INTERNAL_TAMPER5_EVENT_CB_ID = 0x0CU, /*!< RTC Internal Tamper 5 Callback ID */ 253 HAL_RTC_INTERNAL_TAMPER6_EVENT_CB_ID = 0x0DU, /*!< RTC Internal Tamper 6 Callback ID */ 254 HAL_RTC_MSPINIT_CB_ID = 0x0EU, /*!< RTC Msp Init callback ID */ 255 HAL_RTC_MSPDEINIT_CB_ID = 0x0FU /*!< RTC Msp DeInit callback ID */ 256 } HAL_RTC_CallbackIDTypeDef; 257 258 /** 259 * @brief HAL RTC Callback pointer definition 260 */ 261 typedef void (*pRTC_CallbackTypeDef)(RTC_HandleTypeDef *hrtc); /*!< pointer to an RTC callback function */ 262 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */ 263 264 /** 265 * @} 266 */ 267 268 /* Exported constants --------------------------------------------------------*/ 269 /** @defgroup RTC_Exported_Constants RTC Exported Constants 270 * @{ 271 */ 272 273 /** @defgroup RTC_Hour_Formats RTC Hour Formats 274 * @{ 275 */ 276 #define RTC_HOURFORMAT_24 0x00000000U 277 #define RTC_HOURFORMAT_12 RTC_CR_FMT 278 /** 279 * @} 280 */ 281 282 /** @defgroup RTCEx_Output_selection_Definitions RTCEx Output Selection Definition 283 * @{ 284 */ 285 #define RTC_OUTPUT_DISABLE 0x00000000U 286 #define RTC_OUTPUT_ALARMA RTC_CR_OSEL_0 287 #define RTC_OUTPUT_ALARMB RTC_CR_OSEL_1 288 #define RTC_OUTPUT_WAKEUP RTC_CR_OSEL 289 #define RTC_OUTPUT_TAMPER RTC_CR_TAMPOE 290 /** 291 * @} 292 */ 293 294 /** @defgroup RTC_Output_Polarity_Definitions RTC Output Polarity Definitions 295 * @{ 296 */ 297 #define RTC_OUTPUT_POLARITY_HIGH 0x00000000U 298 #define RTC_OUTPUT_POLARITY_LOW RTC_CR_POL 299 /** 300 * @} 301 */ 302 303 /** @defgroup RTC_Output_Type_ALARM_OUT RTC Output Type ALARM OUT 304 * @{ 305 */ 306 #define RTC_OUTPUT_TYPE_PUSHPULL 0x00000000U 307 #define RTC_OUTPUT_TYPE_OPENDRAIN RTC_CR_TAMPALRM_TYPE 308 /** 309 * @} 310 */ 311 312 /** @defgroup RTC_Output_PullUp_ALARM_OUT RTC Output Pull-Up ALARM OUT 313 * @{ 314 */ 315 #define RTC_OUTPUT_PULLUP_NONE 0x00000000U 316 #define RTC_OUTPUT_PULLUP_ON RTC_CR_TAMPALRM_PU 317 /** 318 * @} 319 */ 320 321 /** @defgroup RTC_Output_ALARM_OUT_Remap RTC Output ALARM OUT Remap 322 * @{ 323 */ 324 #define RTC_OUTPUT_REMAP_NONE 0x00000000U 325 #define RTC_OUTPUT_REMAP_POS1 RTC_CR_OUT2EN 326 /** 327 * @} 328 */ 329 330 /** @defgroup RTC_AM_PM_Definitions RTC AM PM Definitions 331 * @{ 332 */ 333 #define RTC_HOURFORMAT12_AM 0x0U 334 #define RTC_HOURFORMAT12_PM 0x1U 335 /** 336 * @} 337 */ 338 339 /** @defgroup RTC_DayLightSaving_Definitions RTC DayLightSaving Definitions 340 * @{ 341 */ 342 #define RTC_DAYLIGHTSAVING_SUB1H RTC_CR_SUB1H 343 #define RTC_DAYLIGHTSAVING_ADD1H RTC_CR_ADD1H 344 #define RTC_DAYLIGHTSAVING_NONE 0x00000000U 345 /** 346 * @} 347 */ 348 349 /** @defgroup RTC_StoreOperation_Definitions RTC StoreOperation Definitions 350 * @{ 351 */ 352 #define RTC_STOREOPERATION_RESET 0x00000000U 353 #define RTC_STOREOPERATION_SET RTC_CR_BKP 354 /** 355 * @} 356 */ 357 358 /** @defgroup RTC_Input_parameter_format_definitions RTC Input Parameter Format Definitions 359 * @{ 360 */ 361 #define RTC_FORMAT_BIN 0x00000000U 362 #define RTC_FORMAT_BCD 0x00000001U 363 /** 364 * @} 365 */ 366 367 /** @defgroup RTC_Month_Date_Definitions RTC Month Date Definitions 368 * @{ 369 */ 370 371 /* Coded in BCD format */ 372 #define RTC_MONTH_JANUARY ((uint8_t)0x01U) 373 #define RTC_MONTH_FEBRUARY ((uint8_t)0x02U) 374 #define RTC_MONTH_MARCH ((uint8_t)0x03U) 375 #define RTC_MONTH_APRIL ((uint8_t)0x04U) 376 #define RTC_MONTH_MAY ((uint8_t)0x05U) 377 #define RTC_MONTH_JUNE ((uint8_t)0x06U) 378 #define RTC_MONTH_JULY ((uint8_t)0x07U) 379 #define RTC_MONTH_AUGUST ((uint8_t)0x08U) 380 #define RTC_MONTH_SEPTEMBER ((uint8_t)0x09U) 381 #define RTC_MONTH_OCTOBER ((uint8_t)0x10U) 382 #define RTC_MONTH_NOVEMBER ((uint8_t)0x11U) 383 #define RTC_MONTH_DECEMBER ((uint8_t)0x12U) 384 385 /** 386 * @} 387 */ 388 389 /** @defgroup RTC_WeekDay_Definitions RTC WeekDay Definitions 390 * @{ 391 */ 392 #define RTC_WEEKDAY_MONDAY ((uint8_t)0x01U) 393 #define RTC_WEEKDAY_TUESDAY ((uint8_t)0x02U) 394 #define RTC_WEEKDAY_WEDNESDAY ((uint8_t)0x03U) 395 #define RTC_WEEKDAY_THURSDAY ((uint8_t)0x04U) 396 #define RTC_WEEKDAY_FRIDAY ((uint8_t)0x05U) 397 #define RTC_WEEKDAY_SATURDAY ((uint8_t)0x06U) 398 #define RTC_WEEKDAY_SUNDAY ((uint8_t)0x07U) 399 400 /** 401 * @} 402 */ 403 404 /** @defgroup RTC_AlarmDateWeekDay_Definitions RTC AlarmDateWeekDay Definitions 405 * @{ 406 */ 407 #define RTC_ALARMDATEWEEKDAYSEL_DATE 0x00000000U 408 #define RTC_ALARMDATEWEEKDAYSEL_WEEKDAY RTC_ALRMAR_WDSEL 409 410 /** 411 * @} 412 */ 413 414 /** @defgroup RTC_AlarmMask_Definitions RTC AlarmMask Definitions 415 * @{ 416 */ 417 #define RTC_ALARMMASK_NONE 0x00000000U 418 #define RTC_ALARMMASK_DATEWEEKDAY RTC_ALRMAR_MSK4 419 #define RTC_ALARMMASK_HOURS RTC_ALRMAR_MSK3 420 #define RTC_ALARMMASK_MINUTES RTC_ALRMAR_MSK2 421 #define RTC_ALARMMASK_SECONDS RTC_ALRMAR_MSK1 422 #define RTC_ALARMMASK_ALL (RTC_ALARMMASK_DATEWEEKDAY | RTC_ALARMMASK_HOURS | \ 423 RTC_ALARMMASK_MINUTES | RTC_ALARMMASK_SECONDS) 424 425 /** 426 * @} 427 */ 428 429 /** @defgroup RTC_Alarms_Definitions RTC Alarms Definitions 430 * @{ 431 */ 432 #define RTC_ALARM_A RTC_CR_ALRAE 433 #define RTC_ALARM_B RTC_CR_ALRBE 434 435 /** 436 * @} 437 */ 438 /** @defgroup RTC_ALARM_Flag_AutoClear_Definitions RTC Alarms Flag Auto Clear Definitions 439 * @{ 440 */ 441 #define ALARM_FLAG_AUTOCLR_ENABLE 0x00000001U 442 #define ALARM_FLAG_AUTOCLR_DISABLE 0x00000000U 443 /** 444 * @} 445 */ 446 447 /** @defgroup RTC_Alarm_Sub_Seconds_Masks_Definitions RTC Alarm Sub Seconds Masks Definitions 448 * @{ 449 */ 450 #define RTC_ALARMSUBSECONDMASK_ALL 0x00000000U /*!< All Alarm SS fields are masked. 451 There is no comparison on sub seconds 452 for Alarm */ 453 #define RTC_ALARMSUBSECONDMASK_SS14_1 RTC_ALRMASSR_MASKSS_0 /*!< SS[14:1] not used in Alarm 454 comparison. Only SS[0] is compared. */ 455 #define RTC_ALARMSUBSECONDMASK_SS14_2 RTC_ALRMASSR_MASKSS_1 /*!< SS[14:2] not used in Alarm 456 comparison. Only SS[1:0] are compared */ 457 #define RTC_ALARMSUBSECONDMASK_SS14_3 (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_1) /*!< SS[14:3] not used in Alarm 458 comparison. Only SS[2:0] 459 are compared */ 460 #define RTC_ALARMSUBSECONDMASK_SS14_4 RTC_ALRMASSR_MASKSS_2 /*!< SS[14:4] not used in Alarm 461 comparison. Only SS[3:0] 462 are compared */ 463 #define RTC_ALARMSUBSECONDMASK_SS14_5 (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_2) /*!< SS[14:5] not used in Alarm 464 comparison. Only SS[4:0] 465 are compared */ 466 #define RTC_ALARMSUBSECONDMASK_SS14_6 (RTC_ALRMASSR_MASKSS_1 | RTC_ALRMASSR_MASKSS_2) /*!< SS[14:6] not used in Alarm 467 comparison.Only SS[5:0] 468 are compared */ 469 #define RTC_ALARMSUBSECONDMASK_SS14_7 (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_1 | \ 470 RTC_ALRMASSR_MASKSS_2) /*!< SS[14:7] not used in Alarm 471 comparison. Only SS[6:0] 472 are compared */ 473 #define RTC_ALARMSUBSECONDMASK_SS14_8 RTC_ALRMASSR_MASKSS_3 /*!< SS[14:8] not used in Alarm 474 comparison. Only SS[7:0] 475 are compared */ 476 #define RTC_ALARMSUBSECONDMASK_SS14_9 (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_3) /*!< SS[14:9] not used in Alarm 477 comparison. Only SS[8:0] 478 are compared */ 479 #define RTC_ALARMSUBSECONDMASK_SS14_10 (RTC_ALRMASSR_MASKSS_1 | RTC_ALRMASSR_MASKSS_3) /*!< SS[14:10] not used in 480 Alarm comparison. Only 481 SS[9:0] are compared */ 482 #define RTC_ALARMSUBSECONDMASK_SS14_11 (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_1 | \ 483 RTC_ALRMASSR_MASKSS_3) /*!< SS[14:11] not used in 484 Alarm comparison. Only 485 SS[10:0] are compared */ 486 #define RTC_ALARMSUBSECONDMASK_SS14_12 (RTC_ALRMASSR_MASKSS_2 | RTC_ALRMASSR_MASKSS_3) /*!< SS[14:12] not used in 487 Alarm comparison. Only 488 SS[11:0] are compared */ 489 #define RTC_ALARMSUBSECONDMASK_SS14_13 (RTC_ALRMASSR_MASKSS_0 | RTC_ALRMASSR_MASKSS_2 | \ 490 RTC_ALRMASSR_MASKSS_3) /*!< SS[14:13] not used in 491 Alarm comparison. Only 492 SS[12:0] are compared */ 493 #define RTC_ALARMSUBSECONDMASK_SS14 (RTC_ALRMASSR_MASKSS_1 | RTC_ALRMASSR_MASKSS_2 | \ 494 RTC_ALRMASSR_MASKSS_3) /*!< SS[14] not used in Alarm 495 comparison. Only SS[13:0] 496 are compared */ 497 #define RTC_ALARMSUBSECONDMASK_NONE RTC_ALRMASSR_MASKSS /*!< SS[14:0] are compared and 498 must match to activate 499 alarm. */ 500 /** 501 * @} 502 */ 503 504 /** @defgroup RTC_Interrupts_Definitions RTC Interrupts Definitions 505 * @{ 506 */ 507 #define RTC_IT_TS RTC_CR_TSIE /*!< Enable Timestamp Interrupt */ 508 #define RTC_IT_WUT RTC_CR_WUTIE /*!< Enable Wakeup timer Interrupt */ 509 #define RTC_IT_SSRU RTC_CR_SSRUIE /*!< Enable SSR Underflow Interrupt */ 510 #define RTC_IT_ALRA RTC_CR_ALRAIE /*!< Enable Alarm A Interrupt */ 511 #define RTC_IT_ALRB RTC_CR_ALRBIE /*!< Enable Alarm B Interrupt */ 512 /** 513 * @} 514 */ 515 516 /** @defgroup RTC_Interruption_Mask RTC Interruptions Flag Mask 517 * @{ 518 */ 519 #define RTC_IT_MASK 0x001FU /*!< RTC interruptions flags mask */ 520 /** 521 * @} 522 */ 523 524 /** @defgroup RTC_Flags_Definitions RTC Flags Definitions 525 * Elements values convention: 000000XX000YYYYYb 526 * - YYYYY : Interrupt flag position in the XX register (5bits) 527 * - XX : Interrupt status register (2bits) 528 * - 01: ICSR register 529 * - 10: SR register 530 * @{ 531 */ 532 #define RTC_FLAG_RECALPF 0x00000110u /*!< Recalibration pending Flag */ 533 #define RTC_FLAG_INITF 0x00000106u /*!< Initialization flag */ 534 #define RTC_FLAG_RSF 0x00000105u /*!< Registers synchronization flag */ 535 #define RTC_FLAG_INITS 0x00000104u /*!< Initialization status flag */ 536 #define RTC_FLAG_SHPF 0x00000103u /*!< Shift operation pending flag */ 537 #define RTC_FLAG_WUTWF 0x00000102u /*!< Wakeup timer write flag */ 538 #define RTC_FLAG_SSRUF 0x00000206u /*!< SSR underflow flag */ 539 #define RTC_FLAG_ITSF 0x00000205u /*!< Internal Time-stamp flag */ 540 #define RTC_FLAG_TSOVF 0x00000204u /*!< Time-stamp overflow flag */ 541 #define RTC_FLAG_TSF 0x00000203u /*!< Time-stamp flag */ 542 #define RTC_FLAG_WUTF 0x00000202u /*!< Wakeup timer flag */ 543 #define RTC_FLAG_ALRBF 0x00000201u /*!< Alarm B flag */ 544 #define RTC_FLAG_ALRAF 0x00000200u /*!< Alarm A flag */ 545 /** 546 * @} 547 */ 548 549 /** @defgroup RTC_Clear_Flags_Definitions RTC Clear Flags Definitions 550 * @{ 551 */ 552 #define RTC_CLEAR_SSRUF RTC_SCR_CSSRUF /*!< Clear SSR underflow flag */ 553 #define RTC_CLEAR_ITSF RTC_SCR_CITSF /*!< Clear Internal Time-stamp flag */ 554 #define RTC_CLEAR_TSOVF RTC_SCR_CTSOVF /*!< Clear Time-stamp overflow flag */ 555 #define RTC_CLEAR_TSF RTC_SCR_CTSF /*!< Clear Time-stamp flag */ 556 #define RTC_CLEAR_WUTF RTC_SCR_CWUTF /*!< Clear Wakeup timer flag */ 557 #define RTC_CLEAR_ALRBF RTC_SCR_CALRBF /*!< Clear Alarm B flag */ 558 #define RTC_CLEAR_ALRAF RTC_SCR_CALRAF /*!< Clear Alarm A flag */ 559 /** 560 * @} 561 */ 562 563 /** 564 * @} 565 */ 566 567 /* Exported macros -----------------------------------------------------------*/ 568 /** @defgroup RTC_Exported_Macros RTC Exported Macros 569 * @{ 570 */ 571 572 /** @brief Reset RTC handle state 573 * @param __HANDLE__ RTC handle. 574 * @retval None 575 */ 576 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1) 577 #define __HAL_RTC_RESET_HANDLE_STATE(__HANDLE__) do{\ 578 (__HANDLE__)->State = HAL_RTC_STATE_RESET;\ 579 (__HANDLE__)->MspInitCallback = NULL;\ 580 (__HANDLE__)->MspDeInitCallback = NULL;\ 581 }while(0) 582 #else 583 #define __HAL_RTC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RTC_STATE_RESET) 584 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */ 585 586 /** 587 * @brief Disable the write protection for RTC registers. 588 * @param __HANDLE__ specifies the RTC handle. 589 * @retval None 590 */ 591 #define __HAL_RTC_WRITEPROTECTION_DISABLE(__HANDLE__) \ 592 do{ \ 593 RTC->WPR = 0xCAU; \ 594 RTC->WPR = 0x53U; \ 595 } while(0U) 596 597 /** 598 * @brief Enable the write protection for RTC registers. 599 * @param __HANDLE__ specifies the RTC handle. 600 * @retval None 601 */ 602 #define __HAL_RTC_WRITEPROTECTION_ENABLE(__HANDLE__) \ 603 do{ \ 604 RTC->WPR = 0xFFU; \ 605 } while(0U) 606 607 /** 608 * @brief Add 1 hour (summer time change). 609 * @param __HANDLE__ specifies the RTC handle. 610 * @param __BKP__ Backup 611 * This parameter can be: 612 * @arg @ref RTC_STOREOPERATION_RESET 613 * @arg @ref RTC_STOREOPERATION_SET 614 * @retval None 615 */ 616 #define __HAL_RTC_DAYLIGHT_SAVING_TIME_ADD1H(__HANDLE__, __BKP__) \ 617 do { \ 618 __HAL_RTC_WRITEPROTECTION_DISABLE(__HANDLE__); \ 619 SET_BIT(RTC->CR, RTC_CR_ADD1H); \ 620 MODIFY_REG(RTC->CR, RTC_CR_BKP , (__BKP__)); \ 621 __HAL_RTC_WRITEPROTECTION_ENABLE(__HANDLE__); \ 622 } while(0); 623 624 /** 625 * @brief Subtract 1 hour (winter time change). 626 * @param __HANDLE__ specifies the RTC handle. 627 * @param __BKP__ Backup 628 * This parameter can be: 629 * @arg @ref RTC_STOREOPERATION_RESET 630 * @arg @ref RTC_STOREOPERATION_SET 631 * @retval None 632 */ 633 #define __HAL_RTC_DAYLIGHT_SAVING_TIME_SUB1H(__HANDLE__, __BKP__) \ 634 do { \ 635 __HAL_RTC_WRITEPROTECTION_DISABLE(__HANDLE__); \ 636 SET_BIT(RTC->CR, RTC_CR_SUB1H); \ 637 MODIFY_REG(RTC->CR, RTC_CR_BKP , (__BKP__)); \ 638 __HAL_RTC_WRITEPROTECTION_ENABLE(__HANDLE__); \ 639 } while(0); 640 641 /** 642 * @brief Enable the RTC ALARMA peripheral. 643 * @param __HANDLE__ specifies the RTC handle. 644 * @retval None 645 */ 646 #define __HAL_RTC_ALARMA_ENABLE(__HANDLE__) (RTC->CR |= (RTC_CR_ALRAE)) 647 648 /** 649 * @brief Disable the RTC ALARMA peripheral. 650 * @param __HANDLE__ specifies the RTC handle. 651 * @retval None 652 */ 653 #define __HAL_RTC_ALARMA_DISABLE(__HANDLE__) (RTC->CR &= ~(RTC_CR_ALRAE)) 654 655 /** 656 * @brief Enable the RTC ALARMB peripheral. 657 * @param __HANDLE__ specifies the RTC handle. 658 * @retval None 659 */ 660 #define __HAL_RTC_ALARMB_ENABLE(__HANDLE__) (RTC->CR |= (RTC_CR_ALRBE)) 661 662 /** 663 * @brief Disable the RTC ALARMB peripheral. 664 * @param __HANDLE__ specifies the RTC handle. 665 * @retval None 666 */ 667 #define __HAL_RTC_ALARMB_DISABLE(__HANDLE__) (RTC->CR &= ~(RTC_CR_ALRBE)) 668 669 /** 670 * @brief Enable the RTC Alarm interrupt. 671 * @param __HANDLE__ specifies the RTC handle. 672 * @param __INTERRUPT__ specifies the RTC Alarm interrupt sources to be enabled or disabled. 673 * This parameter can be any combination of the following values: 674 * @arg @ref RTC_IT_ALRA Alarm A interrupt 675 * @arg @ref RTC_IT_ALRB Alarm B interrupt 676 * @retval None 677 */ 678 #define __HAL_RTC_ALARM_ENABLE_IT(__HANDLE__, __INTERRUPT__) (RTC->CR |= (__INTERRUPT__)) 679 680 /** 681 * @brief Disable the RTC Alarm interrupt. 682 * @param __HANDLE__ specifies the RTC handle. 683 * @param __INTERRUPT__ specifies the RTC Alarm interrupt sources to be enabled or disabled. 684 * This parameter can be any combination of the following values: 685 * @arg @ref RTC_IT_ALRA Alarm A interrupt 686 * @arg @ref RTC_IT_ALRB Alarm B interrupt 687 * @retval None 688 */ 689 #define __HAL_RTC_ALARM_DISABLE_IT(__HANDLE__, __INTERRUPT__) (RTC->CR &= ~(__INTERRUPT__)) 690 691 /** 692 * @brief Check whether the specified RTC Alarm interrupt has occurred or not. 693 * @param __HANDLE__ specifies the RTC handle. 694 * @param __INTERRUPT__ specifies the RTC Alarm interrupt sources to check. 695 * This parameter can be: 696 * @arg @ref RTC_IT_ALRA Alarm A interrupt 697 * @arg @ref RTC_IT_ALRB Alarm B interrupt 698 * @retval None 699 */ 700 #define __HAL_RTC_ALARM_GET_IT(__HANDLE__, __INTERRUPT__) ((((RTC->MISR)& ((__INTERRUPT__)>> 12U)) != 0U) ? 1UL : 0UL) 701 702 /** 703 * @brief Check whether the specified RTC Alarm interrupt has been enabled or not. 704 * @param __HANDLE__ specifies the RTC handle. 705 * @param __INTERRUPT__ specifies the RTC Alarm interrupt sources to check. 706 * This parameter can be: 707 * @arg @ref RTC_IT_ALRA Alarm A interrupt 708 * @arg @ref RTC_IT_ALRB Alarm B interrupt 709 * @retval None 710 */ 711 #define __HAL_RTC_ALARM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((RTC->CR) & (__INTERRUPT__)) != 0U) ? 1UL : 0UL) 712 713 /** 714 * @brief Get the selected RTC Alarms flag status. 715 * @param __HANDLE__ specifies the RTC handle. 716 * @param __FLAG__ specifies the RTC Alarm Flag sources to check. 717 * This parameter can be: 718 * @arg @ref RTC_FLAG_ALRAF 719 * @arg @ref RTC_FLAG_ALRBF 720 * @retval None 721 */ 722 #define __HAL_RTC_ALARM_GET_FLAG(__HANDLE__, __FLAG__) (__HAL_RTC_GET_FLAG((__HANDLE__), (__FLAG__))) 723 724 /** 725 * @brief Clear the RTC Alarms pending flags. 726 * @param __HANDLE__ specifies the RTC handle. 727 * @param __FLAG__ specifies the RTC Alarm Flag sources to clear. 728 * This parameter can be: 729 * @arg @ref RTC_FLAG_ALRAF 730 * @arg @ref RTC_FLAG_ALRBF 731 * @retval None 732 */ 733 #define __HAL_RTC_ALARM_CLEAR_FLAG(__HANDLE__, __FLAG__) \ 734 (((__FLAG__) == RTC_FLAG_ALRAF) ? ((RTC->SCR = (RTC_CLEAR_ALRAF))) : (RTC->SCR = (RTC_CLEAR_ALRBF))) 735 /** 736 * @brief Enable interrupt on the RTC Alarm associated Exti line. 737 * @retval None 738 */ 739 #define __HAL_RTC_ALARM_EXTI_ENABLE_IT() (EXTI->IMR1 |= RTC_EXTI_LINE_ALARM_EVENT) 740 741 /** 742 * @brief Disable interrupt on the RTC Alarm associated Exti line. 743 * @retval None 744 */ 745 #define __HAL_RTC_ALARM_EXTI_DISABLE_IT() (EXTI->IMR1 &= ~(RTC_EXTI_LINE_ALARM_EVENT)) 746 747 /** 748 * @brief Enable event on the RTC Alarm associated Exti line. 749 * @retval None 750 */ 751 #define __HAL_RTC_ALARM_EXTI_ENABLE_EVENT() (EXTI->EMR1 |= RTC_EXTI_LINE_ALARM_EVENT) 752 753 /** 754 * @brief Disable event on the RTC Alarm associated Exti line. 755 * @retval None 756 */ 757 #define __HAL_RTC_ALARM_EXTI_DISABLE_EVENT() (EXTI->EMR1 &= ~(RTC_EXTI_LINE_ALARM_EVENT)) 758 759 /** 760 * @} 761 */ 762 763 /* Include RTC HAL Extended module */ 764 #include "stm32u0xx_hal_rtc_ex.h" 765 766 /* Exported functions --------------------------------------------------------*/ 767 /** @defgroup RTC_Exported_Functions RTC Exported Functions 768 * @{ 769 */ 770 771 /** @defgroup RTC_Exported_Functions_Group1 Initialization and de-initialization functions 772 * @{ 773 */ 774 /* Initialization and de-initialization functions ****************************/ 775 HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc); 776 HAL_StatusTypeDef HAL_RTC_DeInit(RTC_HandleTypeDef *hrtc); 777 778 void HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc); 779 void HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc); 780 781 /* Callbacks Register/UnRegister functions ***********************************/ 782 #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1) 783 HAL_StatusTypeDef HAL_RTC_RegisterCallback(RTC_HandleTypeDef *hrtc, HAL_RTC_CallbackIDTypeDef CallbackID, 784 pRTC_CallbackTypeDef pCallback); 785 HAL_StatusTypeDef HAL_RTC_UnRegisterCallback(RTC_HandleTypeDef *hrtc, HAL_RTC_CallbackIDTypeDef CallbackID); 786 #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */ 787 788 /** 789 * @} 790 */ 791 792 /** @defgroup RTC_Exported_Functions_Group2 RTC Time and Date functions 793 * @{ 794 */ 795 /* RTC Time and Date functions ************************************************/ 796 HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); 797 HAL_StatusTypeDef HAL_RTC_GetTime(const RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); 798 HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format); 799 HAL_StatusTypeDef HAL_RTC_GetDate(const RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format); 800 /* RTC Daylight Saving Time functions *****************************************/ 801 void HAL_RTC_DST_Add1Hour(const RTC_HandleTypeDef *hrtc); 802 void HAL_RTC_DST_Sub1Hour(const RTC_HandleTypeDef *hrtc); 803 void HAL_RTC_DST_SetStoreOperation(const RTC_HandleTypeDef *hrtc); 804 void HAL_RTC_DST_ClearStoreOperation(const RTC_HandleTypeDef *hrtc); 805 uint32_t HAL_RTC_DST_ReadStoreOperation(const RTC_HandleTypeDef *hrtc); 806 /** 807 * @} 808 */ 809 810 /** @defgroup RTC_Exported_Functions_Group3 RTC Alarm functions 811 * @{ 812 */ 813 /* RTC Alarm functions ********************************************************/ 814 HAL_StatusTypeDef HAL_RTC_SetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format); 815 HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format); 816 HAL_StatusTypeDef HAL_RTC_DeactivateAlarm(RTC_HandleTypeDef *hrtc, uint32_t Alarm); 817 HAL_StatusTypeDef HAL_RTC_GetAlarm(const RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, 818 uint32_t Format); 819 void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc); 820 HAL_StatusTypeDef HAL_RTC_PollForAlarmAEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout); 821 void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc); 822 /** 823 * @} 824 */ 825 826 /** @defgroup RTC_Exported_Functions_Group4 Peripheral Control functions 827 * @{ 828 */ 829 /* Peripheral Control functions ***********************************************/ 830 HAL_StatusTypeDef HAL_RTC_WaitForSynchro(const RTC_HandleTypeDef *hrtc); 831 /** 832 * @} 833 */ 834 835 /** @defgroup RTC_Exported_Functions_Group5 Peripheral State functions 836 * @{ 837 */ 838 /* Peripheral State functions *************************************************/ 839 HAL_RTCStateTypeDef HAL_RTC_GetState(const RTC_HandleTypeDef *hrtc); 840 /** 841 * @} 842 */ 843 844 /** 845 * @} 846 */ 847 848 /* Private types -------------------------------------------------------------*/ 849 /* Private variables ---------------------------------------------------------*/ 850 /* Private constants ---------------------------------------------------------*/ 851 /** @defgroup RTC_Private_Constants RTC Private Constants 852 * @{ 853 */ 854 /* Masks Definition */ 855 #define RTC_TR_RESERVED_MASK (RTC_TR_PM | RTC_TR_HT | RTC_TR_HU | \ 856 RTC_TR_MNT | RTC_TR_MNU| RTC_TR_ST | \ 857 RTC_TR_SU) 858 #define RTC_DR_RESERVED_MASK (RTC_DR_YT | RTC_DR_YU | RTC_DR_WDU | \ 859 RTC_DR_MT | RTC_DR_MU | RTC_DR_DT | \ 860 RTC_DR_DU) 861 #define RTC_INIT_MASK 0xFFFFFFFFU 862 #define RTC_RSF_MASK (~(RTC_ICSR_INIT | RTC_ICSR_RSF)) 863 864 #define RTC_TIMEOUT_VALUE 1000U 865 866 /** 867 * @} 868 */ 869 870 /* Private macros ------------------------------------------------------------*/ 871 /** @defgroup RTC_Private_Macros RTC Private Macros 872 * @{ 873 */ 874 875 /** @defgroup RTC_IS_RTC_Definitions RTC Private macros to check input parameters 876 * @{ 877 */ 878 #define IS_RTC_OUTPUT(OUTPUT) (((OUTPUT) == RTC_OUTPUT_DISABLE) || \ 879 ((OUTPUT) == RTC_OUTPUT_ALARMA) || \ 880 ((OUTPUT) == RTC_OUTPUT_ALARMB) || \ 881 ((OUTPUT) == RTC_OUTPUT_WAKEUP) || \ 882 ((OUTPUT) == RTC_OUTPUT_TAMPER)) 883 884 #define IS_RTC_HOUR_FORMAT(FORMAT) (((FORMAT) == RTC_HOURFORMAT_12) || \ 885 ((FORMAT) == RTC_HOURFORMAT_24)) 886 887 #define IS_RTC_OUTPUT_POL(POL) (((POL) == RTC_OUTPUT_POLARITY_HIGH) || \ 888 ((POL) == RTC_OUTPUT_POLARITY_LOW)) 889 890 #define IS_RTC_OUTPUT_TYPE(TYPE) (((TYPE) == RTC_OUTPUT_TYPE_OPENDRAIN) || \ 891 ((TYPE) == RTC_OUTPUT_TYPE_PUSHPULL)) 892 893 #define IS_RTC_OUTPUT_PULLUP(TYPE) (((TYPE) == RTC_OUTPUT_PULLUP_NONE) || \ 894 ((TYPE) == RTC_OUTPUT_PULLUP_ON)) 895 896 #define IS_RTC_OUTPUT_REMAP(REMAP) (((REMAP) == RTC_OUTPUT_REMAP_NONE) || \ 897 ((REMAP) == RTC_OUTPUT_REMAP_POS1)) 898 899 #define IS_RTC_HOURFORMAT12(PM) (((PM) == RTC_HOURFORMAT12_AM) || \ 900 ((PM) == RTC_HOURFORMAT12_PM)) 901 902 #define IS_RTC_DAYLIGHT_SAVING(SAVE) (((SAVE) == RTC_DAYLIGHTSAVING_SUB1H) || \ 903 ((SAVE) == RTC_DAYLIGHTSAVING_ADD1H) || \ 904 ((SAVE) == RTC_DAYLIGHTSAVING_NONE)) 905 906 #define IS_RTC_STORE_OPERATION(OPERATION) (((OPERATION) == RTC_STOREOPERATION_RESET) || \ 907 ((OPERATION) == RTC_STOREOPERATION_SET)) 908 909 #define IS_RTC_FORMAT(FORMAT) (((FORMAT) == RTC_FORMAT_BIN) || \ 910 ((FORMAT) == RTC_FORMAT_BCD)) 911 912 #define IS_RTC_YEAR(YEAR) ((YEAR) <= 99u) 913 914 #define IS_RTC_MONTH(MONTH) (((MONTH) >= 1u) && ((MONTH) <= 12u)) 915 916 #define IS_RTC_DATE(DATE) (((DATE) >= 1u) && ((DATE) <= 31u)) 917 918 #define IS_RTC_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_WEEKDAY_MONDAY) || \ 919 ((WEEKDAY) == RTC_WEEKDAY_TUESDAY) || \ 920 ((WEEKDAY) == RTC_WEEKDAY_WEDNESDAY) || \ 921 ((WEEKDAY) == RTC_WEEKDAY_THURSDAY) || \ 922 ((WEEKDAY) == RTC_WEEKDAY_FRIDAY) || \ 923 ((WEEKDAY) == RTC_WEEKDAY_SATURDAY) || \ 924 ((WEEKDAY) == RTC_WEEKDAY_SUNDAY)) 925 926 #define IS_RTC_ALARM_DATE_WEEKDAY_DATE(DATE) (((DATE) >0u) && ((DATE) <= 31u)) 927 928 #define IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_WEEKDAY_MONDAY) || \ 929 ((WEEKDAY) == RTC_WEEKDAY_TUESDAY) || \ 930 ((WEEKDAY) == RTC_WEEKDAY_WEDNESDAY) || \ 931 ((WEEKDAY) == RTC_WEEKDAY_THURSDAY) || \ 932 ((WEEKDAY) == RTC_WEEKDAY_FRIDAY) || \ 933 ((WEEKDAY) == RTC_WEEKDAY_SATURDAY) || \ 934 ((WEEKDAY) == RTC_WEEKDAY_SUNDAY)) 935 936 #define IS_RTC_ALARM_DATE_WEEKDAY_SEL(SEL) (((SEL) == RTC_ALARMDATEWEEKDAYSEL_DATE) || \ 937 ((SEL) == RTC_ALARMDATEWEEKDAYSEL_WEEKDAY)) 938 939 #define IS_RTC_ALARM_MASK(MASK) (((MASK) & ~(RTC_ALARMMASK_ALL)) == 0UL) 940 941 #define IS_RTC_ALARM(ALARM) (((ALARM) == RTC_ALARM_A) || \ 942 ((ALARM) == RTC_ALARM_B)) 943 944 #define IS_RTC_ALARM_SUB_SECOND_VALUE(VALUE) ((VALUE) <= RTC_ALRMASSR_SS) 945 946 #define IS_RTC_ALARM_SUB_SECOND_MASK(MASK) (((MASK) == 0UL) || \ 947 (((MASK) >= RTC_ALARMSUBSECONDMASK_SS14_1) && \ 948 ((MASK) <= RTC_ALARMSUBSECONDMASK_NONE))) 949 950 #define IS_RTC_ASYNCH_PREDIV(PREDIV) ((PREDIV) <= (RTC_PRER_PREDIV_A >> RTC_PRER_PREDIV_A_Pos)) 951 952 #define IS_RTC_SYNCH_PREDIV(PREDIV) ((PREDIV) <= (RTC_PRER_PREDIV_S >> RTC_PRER_PREDIV_S_Pos)) 953 954 #define IS_RTC_HOUR12(HOUR) (((HOUR) > 0u) && ((HOUR) <= 12u)) 955 956 #define IS_RTC_HOUR24(HOUR) ((HOUR) <= 23u) 957 958 #define IS_RTC_MINUTES(MINUTES) ((MINUTES) <= 59u) 959 960 #define IS_RTC_SECONDS(SECONDS) ((SECONDS) <= 59u) 961 962 /** 963 * @} 964 */ 965 966 /** 967 * @} 968 */ 969 970 /* Private functions -------------------------------------------------------------*/ 971 /** @defgroup RTC_Private_Functions RTC Private Functions 972 * @{ 973 */ 974 HAL_StatusTypeDef RTC_EnterInitMode(const RTC_HandleTypeDef *hrtc); 975 HAL_StatusTypeDef RTC_ExitInitMode(RTC_HandleTypeDef *hrtc); 976 uint8_t RTC_ByteToBcd2(uint8_t Value); 977 uint8_t RTC_Bcd2ToByte(uint8_t Value); 978 /** 979 * @} 980 */ 981 982 /** 983 * @} 984 */ 985 986 /** 987 * @} 988 */ 989 990 #ifdef __cplusplus 991 } 992 #endif 993 994 #endif /* __STM32U0xx_HAL_RTC_H */ 995