mbed official / mbed

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

Revision:
119:aae6fcc7d9bb
Parent:
96:487b796308b0
--- a/TARGET_NUCLEO_L053R8/stm32l0xx_hal_rtc.h	Wed Apr 13 12:19:19 2016 +0100
+++ b/TARGET_NUCLEO_L053R8/stm32l0xx_hal_rtc.h	Wed Apr 27 12:10:56 2016 -0500
@@ -2,13 +2,13 @@
   ******************************************************************************
   * @file    stm32l0xx_hal_rtc.h
   * @author  MCD Application Team
-  * @version V1.2.0
-  * @date    06-February-2015
+  * @version V1.5.0
+  * @date    8-January-2016
   * @brief   Header file of RTC HAL module.
   ******************************************************************************
   * @attention
   *
-  * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
+  * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
   *
   * Redistribution and use in source and binary forms, with or without modification,
   * are permitted provided that the following conditions are met:
@@ -87,7 +87,7 @@
                                  This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x7FFF */
 
   uint32_t OutPut;          /*!< Specifies which signal will be routed to the RTC output.
-                                 This parameter can be a value of @ref RTC_Output_selection_Definitions */
+                                 This parameter can be a value of @ref RTCEx_Output_selection_Definitions */
 
   uint32_t OutPutRemap;    /*!< Specifies the remap for RTC output.
                                  This parameter can be a value of @ref  RTC_Output_ALARM_OUT_Remap */
@@ -114,12 +114,19 @@
   uint8_t Seconds;          /*!< Specifies the RTC Time Seconds.
                                  This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
 
-  uint32_t SubSeconds;      /*!< Specifies the RTC Time SubSeconds.
-                                 This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
-
   uint8_t TimeFormat;       /*!< Specifies the RTC AM/PM Time.
                                  This parameter can be a value of @ref RTC_AM_PM_Definitions */
-
+  
+  uint32_t SubSeconds;     /*!< Specifies the RTC_SSR RTC Sub Second register content.
+                                 This parameter corresponds to a time unit range between [0-1] Second
+                                 with [1 Sec / SecondFraction +1] granularity */
+ 
+  uint32_t SecondFraction;  /*!< Specifies the range or granularity of Sub Second register content
+                                 corresponding to Synchronous pre-scaler factor value (PREDIV_S)
+                                 This parameter corresponds to a time unit range between [0-1] Second
+                                 with [1 Sec / SecondFraction +1] granularity.
+                                 This field will be used only by HAL_RTC_GetTime function */
+  
   uint32_t DayLightSaving;  /*!< Specifies RTC_DayLightSaveOperation: the value of hour adjustment.
                                  This parameter can be a value of @ref RTC_DayLightSaving_Definitions */
 
@@ -172,8 +179,8 @@
 }RTC_AlarmTypeDef;
 
 /** 
-  * @brief  Time Handle Structure definition
-  */
+  * @brief  RTC Handle Structure definition  
+  */ 
 typedef struct
 {
   RTC_TypeDef               *Instance;  /*!< Register base address    */
@@ -193,54 +200,17 @@
 /** @defgroup RTC_Exported_Constants RTC Exported Constants
   * @{
   */
-
-/** @defgroup RTC_Mask_Definition RTC Mask Definition
-  * @{
-  */
-/* Masks Definition */
-#define RTC_TR_RESERVED_MASK  ((uint32_t) (RTC_TR_PM | RTC_TR_HT | RTC_TR_HU | \
-                                           RTC_TR_MNT | RTC_TR_MNU| RTC_TR_ST | \
-                                           RTC_TR_SU))
-#define RTC_DR_RESERVED_MASK  ((uint32_t) (RTC_DR_YT | RTC_DR_YU | RTC_DR_WDU | \
-                                           RTC_DR_MT | RTC_DR_MU | RTC_DR_DT  | \
-                                           RTC_DR_DU))
-
-#define RTC_INIT_MASK           ((uint32_t)0xFFFFFFFF)
-
-#define RTC_RSF_MASK            ((uint32_t)~(RTC_ISR_INIT | RTC_ISR_RSF))
-
-#define RTC_TIMEOUT_VALUE  1000
-/**
-  * @}
-  */
-  
+ 
 /** @defgroup RTC_Hour_Formats RTC Hour Formats
   * @{
   */
 #define RTC_HOURFORMAT_24              ((uint32_t)0x00000000)
 #define RTC_HOURFORMAT_12              ((uint32_t)RTC_CR_FMT)
 
-#define IS_RTC_HOUR_FORMAT(__FORMAT__)   (((__FORMAT__) == RTC_HOURFORMAT_12) || \
-                                          ((__FORMAT__) == RTC_HOURFORMAT_24))
 /**
   * @}
   */
 
-/** @defgroup RTC_Output_selection_Definitions RTC Output selection Definitions
-  * @{
-  */
-#define RTC_OUTPUT_DISABLE             ((uint32_t)0x00000000)
-#define RTC_OUTPUT_ALARMA              ((uint32_t)RTC_CR_OSEL_0)
-#define RTC_OUTPUT_ALARMB              ((uint32_t)RTC_CR_OSEL_1)
-#define RTC_OUTPUT_WAKEUP              ((uint32_t)RTC_CR_OSEL)
-
-#define IS_RTC_OUTPUT(__OUTPUT__) (((__OUTPUT__) == RTC_OUTPUT_DISABLE) || \
-                                   ((__OUTPUT__) == RTC_OUTPUT_ALARMA)   || \
-                                   ((__OUTPUT__) == RTC_OUTPUT_ALARMB)   || \
-                                   ((__OUTPUT__) == RTC_OUTPUT_WAKEUP))
-/**
-  * @}
-  */
 
 /** @defgroup RTC_Output_Polarity_Definitions RTC Output Polarity Definitions
   * @{
@@ -248,8 +218,6 @@
 #define RTC_OUTPUT_POLARITY_HIGH       ((uint32_t)0x00000000)
 #define RTC_OUTPUT_POLARITY_LOW        ((uint32_t)RTC_CR_POL)
 
-#define IS_RTC_OUTPUT_POL(__POL__)  (((__POL__) == RTC_OUTPUT_POLARITY_HIGH) || \
-                                     ((__POL__) == RTC_OUTPUT_POLARITY_LOW))
 /**
   * @}
   */
@@ -260,9 +228,6 @@
 #define RTC_OUTPUT_TYPE_OPENDRAIN      ((uint32_t)0x00000000)
 #define RTC_OUTPUT_TYPE_PUSHPULL       ((uint32_t)RTC_OR_ALARMOUTTYPE)
 
-#define IS_RTC_OUTPUT_TYPE(__TYPE__) (((__TYPE__) == RTC_OUTPUT_TYPE_OPENDRAIN) || \
-                                      ((__TYPE__) == RTC_OUTPUT_TYPE_PUSHPULL))
-
 /**
   * @}
   */
@@ -270,51 +235,18 @@
 /** @defgroup RTC_Output_ALARM_OUT_Remap RTC Output ALARM OUT Remap
   * @{
   */
-#define RTC_OUTPUT_REMAP_PC13              ((uint32_t)0x00000000)
-#define RTC_OUTPUT_REMAP_PB14              ((uint32_t)RTC_OR_OUT_RMP)
-#define IS_RTC_OUTPUT_REMAP(__REMAP__)     (((__REMAP__) == RTC_OUTPUT_REMAP_PC13) || \
-                                            ((__REMAP__) == RTC_OUTPUT_REMAP_PB14))
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Asynchronous_Predivider RTC Asynchronous Predivider
-  * @{
-  */
-#define IS_RTC_ASYNCH_PREDIV(__PREDIV__)   ((__PREDIV__) <= (uint32_t)0x7F)
+#define RTC_OUTPUT_REMAP_NONE              ((uint32_t)0x00000000)
+#define RTC_OUTPUT_REMAP_POS1               ((uint32_t)RTC_OR_OUT_RMP)
 /**
   * @}
   */
-
-
-/** @defgroup RTC_Synchronous_Predivider RTC Synchronous Predivider
-  * @{
-  */
-#define IS_RTC_SYNCH_PREDIV(__PREDIV__)    ((__PREDIV__) <= (uint32_t)RTC_PRER_PREDIV_S)
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Time_Definitions RTC Time Definitions
-  * @{
-  */
-#define IS_RTC_HOUR12(__HOUR__)            (((__HOUR__) > (uint32_t)0) && ((__HOUR__) <= (uint32_t)12))
-#define IS_RTC_HOUR24(__HOUR__)            ((__HOUR__) <= (uint32_t)23)
-#define IS_RTC_MINUTES(__MINUTES__)        ((__MINUTES__) <= (uint32_t)59)
-#define IS_RTC_SECONDS(__SECONDS__)        ((__SECONDS__) <= (uint32_t)59)
-/**
-  * @}
-  */
-
+  
 /** @defgroup RTC_AM_PM_Definitions RTC AM PM Definitions
   * @{
   */
 #define RTC_HOURFORMAT12_AM            ((uint8_t)0x00)
 #define RTC_HOURFORMAT12_PM            ((uint8_t)0x40)
 
-#define IS_RTC_HOURFORMAT12(__PM__)  (((__PM__) == RTC_HOURFORMAT12_AM) || \
-                                      ((__PM__) == RTC_HOURFORMAT12_PM))
 /**
   * @}
   */
@@ -326,9 +258,6 @@
 #define RTC_DAYLIGHTSAVING_ADD1H       ((uint32_t)RTC_CR_ADD1H)
 #define RTC_DAYLIGHTSAVING_NONE        ((uint32_t)0x00000000)
 
-#define IS_RTC_DAYLIGHT_SAVING(__SAVE__) (((__SAVE__) == RTC_DAYLIGHTSAVING_SUB1H) || \
-                                          ((__SAVE__) == RTC_DAYLIGHTSAVING_ADD1H)  || \
-                                          ((__SAVE__) == RTC_DAYLIGHTSAVING_NONE))
 /**
   * @}
   */
@@ -339,8 +268,6 @@
 #define RTC_STOREOPERATION_RESET        ((uint32_t)0x00000000)
 #define RTC_STOREOPERATION_SET          ((uint32_t)RTC_CR_BCK)
 
-#define IS_RTC_STORE_OPERATION(__OPERATION__) (((__OPERATION__) == RTC_STOREOPERATION_RESET) || \
-                                               ((__OPERATION__) == RTC_STOREOPERATION_SET))
 /**
   * @}
   */
@@ -352,16 +279,6 @@
 #define RTC_FORMAT_BIN   ((uint32_t)0x000000000)
 #define RTC_FORMAT_BCD   ((uint32_t)0x000000001)
 
-#define IS_RTC_FORMAT(__FORMAT__) (((__FORMAT__) == RTC_FORMAT_BIN) || ((__FORMAT__) == RTC_FORMAT_BCD))
-
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Year_Date_Definitions RTC Year Date Definitions
-  * @{
-  */
-#define IS_RTC_YEAR(__YEAR__)           ((__YEAR__) <= (uint32_t)99)
 /**
   * @}
   */
@@ -384,8 +301,6 @@
 #define RTC_MONTH_NOVEMBER             ((uint8_t)0x11)
 #define RTC_MONTH_DECEMBER             ((uint8_t)0x12)
 
-#define IS_RTC_MONTH(__MONTH__)   (((__MONTH__) >= (uint32_t)1) && ((__MONTH__) <= (uint32_t)12))
-#define IS_RTC_DATE(__DATE__)     (((__DATE__) >= (uint32_t)1) && ((__DATE__) <= (uint32_t)31))
 /**
   * @}
   */
@@ -401,28 +316,6 @@
 #define RTC_WEEKDAY_SATURDAY           ((uint8_t)0x06)
 #define RTC_WEEKDAY_SUNDAY             ((uint8_t)0x07)
 
-#define IS_RTC_WEEKDAY(__WEEKDAY__)   (((__WEEKDAY__) == RTC_WEEKDAY_MONDAY)   || \
-                                       ((__WEEKDAY__) == RTC_WEEKDAY_TUESDAY)   || \
-                                       ((__WEEKDAY__) == RTC_WEEKDAY_WEDNESDAY) || \
-                                       ((__WEEKDAY__) == RTC_WEEKDAY_THURSDAY)  || \
-                                       ((__WEEKDAY__) == RTC_WEEKDAY_FRIDAY)    || \
-                                       ((__WEEKDAY__) == RTC_WEEKDAY_SATURDAY)  || \
-                                       ((__WEEKDAY__) == RTC_WEEKDAY_SUNDAY))
-/**
-  * @}
-  */
-
-/** @defgroup RTC_Alarm_Definitions RTC Alarm Definitions
-  * @{
-  */
-#define IS_RTC_ALARM_DATE_WEEKDAY_DATE(__DATE__) (((__DATE__) >(uint32_t) 0) && ((__DATE__) <= (uint32_t)31))
-#define IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(__WEEKDAY__) (((__WEEKDAY__) == RTC_WEEKDAY_MONDAY)   || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_TUESDAY)   || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_WEDNESDAY) || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_THURSDAY)  || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_FRIDAY)    || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_SATURDAY)  || \
-                                                        ((__WEEKDAY__) == RTC_WEEKDAY_SUNDAY))
 /**
   * @}
   */
@@ -433,8 +326,6 @@
 #define RTC_ALARMDATEWEEKDAYSEL_DATE      ((uint32_t)0x00000000)
 #define RTC_ALARMDATEWEEKDAYSEL_WEEKDAY   RTC_ALRMAR_WDSEL
 
-#define IS_RTC_ALARM_DATE_WEEKDAY_SEL(__SEL__) (((__SEL__) == RTC_ALARMDATEWEEKDAYSEL_DATE) || \
-                                                ((__SEL__) == RTC_ALARMDATEWEEKDAYSEL_WEEKDAY))
 /**
   * @}
   */
@@ -453,7 +344,6 @@
                                                      RTC_ALARMMASK_MINUTES     | \
                                                      RTC_ALARMMASK_SECONDS))
 
-#define IS_RTC_ALARM_MASK(__MASK__)  (((__MASK__) & ~(RTC_ALARMMASK_ALL)) == (uint32_t)RESET)
 /**
   * @}
   */
@@ -464,18 +354,10 @@
 #define RTC_ALARM_A                       RTC_CR_ALRAE
 #define RTC_ALARM_B                       RTC_CR_ALRBE
 
-#define IS_RTC_ALARM(__ALARM__)      (((__ALARM__) == RTC_ALARM_A) || ((__ALARM__) == RTC_ALARM_B))
 /**
   * @}
   */
 
-/** @defgroup RTC_Alarm_Sub_Seconds_Value RTC Alarm Sub Seconds Value
-  * @{
-  */
-#define IS_RTC_ALARM_SUB_SECOND_VALUE(__VALUE__) ((__VALUE__) <= RTC_ALRMASSR_SS)
-/**
-  * @}
-  */
 
   /** @defgroup RTC_Alarm_Sub_Seconds_Masks_Definitions RTC Alarm Sub Seconds Masks Definitions
   * @{
@@ -513,23 +395,6 @@
                                                                                                                                       comparison.Only SS[13:0] are compared  */
 #define RTC_ALARMSUBSECONDMASK_NONE        RTC_ALRMASSR_MASKSS                                                                   /*!< SS[14:0] are compared and must match
                                                                                                                                       to activate alarm. */
-
-#define IS_RTC_ALARM_SUB_SECOND_MASK(__MASK__)   (((__MASK__) == RTC_ALARMSUBSECONDMASK_ALL)     || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_1)  || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_2)  || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_3)  || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_4)  || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_5)  || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_6)  || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_7)  || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_8)  || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_9)  || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_10) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_11) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_12) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14_13) || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_SS14)    || \
-                                                  ((__MASK__) == RTC_ALARMSUBSECONDMASK_NONE))
 /**
   * @}
   */
@@ -542,7 +407,20 @@
 #define RTC_IT_ALRB                       ((uint32_t)RTC_CR_ALRBIE)
 #define RTC_IT_ALRA                       ((uint32_t)RTC_CR_ALRAIE)
 #define RTC_IT_TAMP                       ((uint32_t)RTC_TAMPCR_TAMPIE) /* Used only to Enable the Tamper Interrupt */
+
+#if defined (STM32L063xx) || defined (STM32L062xx) || defined (STM32L061xx) || \
+    defined (STM32L053xx) || defined (STM32L052xx) || defined (STM32L051xx) ||\
+    defined (STM32L083xx) || defined (STM32L082xx) || defined (STM32L081xx) || \
+    defined (STM32L073xx) || defined (STM32L072xx) || defined (STM32L071xx) || \
+    defined (STM32L031xx) || defined (STM32L041xx)
+
 #define RTC_IT_TAMP1                      ((uint32_t)RTC_TAMPCR_TAMP1IE)
+#endif /* (STM32L063xx) || (STM32L062xx) || (STM32L061xx) ||
+        * (STM32L053xx) || (STM32L052xx) || (STM32L051xx) ||
+        * (STM32L083xx) || (STM32L082xx) || (STM32L081xx) ||
+        * (STM32L073xx) || (STM32L072xx) || (STM32L071xx) ||
+        * (STM32L031xx) || (STM32L041xx)
+        */
 #define RTC_IT_TAMP2                      ((uint32_t)RTC_TAMPCR_TAMP2IE)
 /**
   * @}
@@ -553,13 +431,25 @@
   */
 #define RTC_FLAG_RECALPF                  ((uint32_t)RTC_ISR_RECALPF)
 #define RTC_FLAG_TAMP2F                   ((uint32_t)RTC_ISR_TAMP2F)
+
+#if defined (STM32L063xx) || defined (STM32L062xx) || defined (STM32L061xx) || \
+    defined (STM32L053xx) || defined (STM32L052xx) || defined (STM32L051xx) ||\
+    defined (STM32L083xx) || defined (STM32L082xx) || defined (STM32L081xx) || \
+    defined (STM32L073xx) || defined (STM32L072xx) || defined (STM32L071xx) || \
+    defined (STM32L031xx) || defined (STM32L041xx)
 #define RTC_FLAG_TAMP1F                   ((uint32_t)RTC_ISR_TAMP1F)
+#endif /* (STM32L063xx) || (STM32L062xx) || (STM32L061xx) ||
+        * (STM32L053xx) || (STM32L052xx) || (STM32L051xx) ||
+        * (STM32L083xx) || (STM32L082xx) || (STM32L081xx) ||
+        * (STM32L073xx) || (STM32L072xx) || (STM32L071xx) ||
+        * (STM32L031xx) || (STM32L041xx)
+        */
+
 #define RTC_FLAG_TSOVF                    ((uint32_t)RTC_ISR_TSOVF)
 #define RTC_FLAG_TSF                      ((uint32_t)RTC_ISR_TSF)
 #define RTC_FLAG_WUTF                     ((uint32_t)RTC_ISR_WUTF)
 #define RTC_FLAG_ALRBF                    ((uint32_t)RTC_ISR_ALRBF)
 #define RTC_FLAG_ALRAF                    ((uint32_t)RTC_ISR_ALRAF)
-#define RTC_FLAG_INIT                     ((uint32_t)RTC_ISR_INIT)
 #define RTC_FLAG_INITF                    ((uint32_t)RTC_ISR_INITF)
 #define RTC_FLAG_RSF                      ((uint32_t)RTC_ISR_RSF)
 #define RTC_FLAG_INITS                    ((uint32_t)RTC_ISR_INITS)
@@ -666,7 +556,18 @@
   *            @arg RTC_IT_ALRB: Alarm B interrupt
   * @retval None
   */
-#define __HAL_RTC_ALARM_GET_IT(__HANDLE__, __INTERRUPT__)  ((((((__HANDLE__)->Instance->ISR)& ((__INTERRUPT__)>> 4)) & RTC_FLAGS_MASK) != RESET)? SET : RESET)
+#define __HAL_RTC_ALARM_GET_IT(__HANDLE__, __INTERRUPT__)  (((((__HANDLE__)->Instance->ISR)& ((__INTERRUPT__)>> 4)) != RESET)? SET : RESET)
+
+/**
+  * @brief  Check whether the specified RTC Alarm interrupt has been enabled or not.
+  * @param  __HANDLE__: specifies the RTC handle.
+  * @param  __INTERRUPT__: specifies the RTC Alarm interrupt sources to check.
+  *         This parameter can be:
+  *            @arg RTC_IT_ALRA: Alarm A interrupt
+  *            @arg RTC_IT_ALRB: Alarm B interrupt
+  * @retval None
+  */
+#define __HAL_RTC_ALARM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
 
 /**
   * @brief  Get the selected RTC Alarm's flag status.
@@ -690,11 +591,7 @@
   *             @arg RTC_FLAG_ALRBF
   * @retval None
   */
-#define __HAL_RTC_ALARM_CLEAR_FLAG(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->ISR) = (~(((__FLAG__) | RTC_ISR_INIT)& RTC_FLAGS_MASK) | ((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
-
-#define RTC_EXTI_LINE_ALARM_EVENT             ((uint32_t)EXTI_IMR_IM17)  /*!< External interrupt line 17 Connected to the RTC Alarm event */
-#define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT  ((uint32_t)EXTI_IMR_IM19)  /*!< External interrupt line 19 Connected to the RTC Tamper and Time Stamp events */
-#define RTC_EXTI_LINE_WAKEUPTIMER_EVENT       ((uint32_t)EXTI_IMR_IM20)  /*!< External interrupt line 20 Connected to the RTC Wakeup event */
+#define __HAL_RTC_ALARM_CLEAR_FLAG(__HANDLE__, __FLAG__)   ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT) | ((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
 
 /**
   * @brief  Enable interrupt on the RTC Alarm associated Exti line.
@@ -748,13 +645,13 @@
   * @brief  Enable rising & falling edge trigger on the RTC Alarm associated Exti line.  
   * @retval None.
   */
-#define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_FALLING_EDGE() __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_ALARM_EXTI_ENABLE_FALLING_EDGE();
+#define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_FALLING_EDGE() do { __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_ALARM_EXTI_ENABLE_FALLING_EDGE(); } while(0);
 
 /**
   * @brief  Disable rising & falling edge trigger on the RTC Alarm associated Exti line.  
   * @retval None.
   */
-#define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_FALLING_EDGE() __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE();
+#define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_FALLING_EDGE() do { __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE(); } while(0);
 
 /**
   * @brief Check whether the RTC Alarm associated Exti line interrupt flag is set or not.
@@ -775,13 +672,6 @@
 #define __HAL_RTC_ALARM_EXTI_GENERATE_SWIT()         (EXTI->SWIER |= RTC_EXTI_LINE_ALARM_EVENT)
 
 /**
-  * @brief Generate a Software interrupt on RTC Alarm associated Exti line.
-  * @retval None.
-  */
-#define __HAL_RTC_ALARM_EXTI_GENERATE_SWIT()         (EXTI->SWIER |= RTC_EXTI_LINE_ALARM_EVENT)
-
-
-/**
   * @}
   */
 
@@ -854,15 +744,144 @@
   * @}
   */  
 
+/* Private types -------------------------------------------------------------*/ 
+/* Private variables ---------------------------------------------------------*/
+/* Private constants ---------------------------------------------------------*/
+/** @defgroup RTC_Private_Constants RTC Private Constants
+  * @{
+  */
+/* Masks Definition */
+#define RTC_TR_RESERVED_MASK  ((uint32_t) (RTC_TR_PM | RTC_TR_HT | RTC_TR_HU | \
+                                           RTC_TR_MNT | RTC_TR_MNU| RTC_TR_ST | \
+                                           RTC_TR_SU))
+#define RTC_DR_RESERVED_MASK  ((uint32_t) (RTC_DR_YT | RTC_DR_YU | RTC_DR_WDU | \
+                                           RTC_DR_MT | RTC_DR_MU | RTC_DR_DT  | \
+                                           RTC_DR_DU))
+#define RTC_INIT_MASK           ((uint32_t)0xFFFFFFFF)
+#define RTC_RSF_MASK            ((uint32_t)~(RTC_ISR_INIT | RTC_ISR_RSF))
+
+#define RTC_TIMEOUT_VALUE  1000
+  
+#define RTC_EXTI_LINE_ALARM_EVENT             ((uint32_t)EXTI_IMR_IM17)  /*!< External interrupt line 17 Connected to the RTC Alarm event */
+
+/**
+  * @}
+  */
+
+/* Private macros ------------------------------------------------------------*/
+/** @defgroup RTC_Private_Macros RTC Private Macros
+  * @{
+  */
+
+/** @defgroup RTC_IS_RTC_Definitions RTC Private macros to check input parameters
+  * @{
+  */ 
+
+#define IS_RTC_HOUR_FORMAT(FORMAT)     (((FORMAT) == RTC_HOURFORMAT_12) || \
+                                        ((FORMAT) == RTC_HOURFORMAT_24))
+
+#define IS_RTC_OUTPUT_POL(POL) (((POL) == RTC_OUTPUT_POLARITY_HIGH) || \
+                                ((POL) == RTC_OUTPUT_POLARITY_LOW))
+
+#define IS_RTC_OUTPUT_TYPE(TYPE) (((TYPE) == RTC_OUTPUT_TYPE_OPENDRAIN) || \
+                                  ((TYPE) == RTC_OUTPUT_TYPE_PUSHPULL))
+
+#define IS_RTC_OUTPUT_REMAP(REMAP)   (((REMAP) == RTC_OUTPUT_REMAP_NONE) || \
+                                      ((REMAP) == RTC_OUTPUT_REMAP_POS1))
+
+#define IS_RTC_HOURFORMAT12(PM)  (((PM) == RTC_HOURFORMAT12_AM) || \
+                                  ((PM) == RTC_HOURFORMAT12_PM))
+
+#define IS_RTC_DAYLIGHT_SAVING(SAVE) (((SAVE) == RTC_DAYLIGHTSAVING_SUB1H) || \
+                                      ((SAVE) == RTC_DAYLIGHTSAVING_ADD1H) || \
+                                      ((SAVE) == RTC_DAYLIGHTSAVING_NONE))
+
+#define IS_RTC_STORE_OPERATION(OPERATION) (((OPERATION) == RTC_STOREOPERATION_RESET) || \
+                                           ((OPERATION) == RTC_STOREOPERATION_SET))
+
+#define IS_RTC_FORMAT(FORMAT) (((FORMAT) == RTC_FORMAT_BIN) || ((FORMAT) == RTC_FORMAT_BCD))
+
+#define IS_RTC_YEAR(YEAR)              ((YEAR) <= (uint32_t)99)
+
+#define IS_RTC_MONTH(MONTH)            (((MONTH) >= (uint32_t)1) && ((MONTH) <= (uint32_t)12))
+
+#define IS_RTC_DATE(DATE)              (((DATE) >= (uint32_t)1) && ((DATE) <= (uint32_t)31))
+
+#define IS_RTC_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_WEEKDAY_MONDAY)    || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_TUESDAY)   || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_WEDNESDAY) || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_THURSDAY)  || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_FRIDAY)    || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_SATURDAY)  || \
+                                 ((WEEKDAY) == RTC_WEEKDAY_SUNDAY))
+
+#define IS_RTC_ALARM_DATE_WEEKDAY_DATE(DATE) (((DATE) >(uint32_t) 0) && ((DATE) <= (uint32_t)31))
+
+#define IS_RTC_ALARM_DATE_WEEKDAY_WEEKDAY(WEEKDAY) (((WEEKDAY) == RTC_WEEKDAY_MONDAY)    || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_TUESDAY)   || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_WEDNESDAY) || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_THURSDAY)  || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_FRIDAY)    || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_SATURDAY)  || \
+                                                    ((WEEKDAY) == RTC_WEEKDAY_SUNDAY))
+
+#define IS_RTC_ALARM_DATE_WEEKDAY_SEL(SEL) (((SEL) == RTC_ALARMDATEWEEKDAYSEL_DATE) || \
+                                            ((SEL) == RTC_ALARMDATEWEEKDAYSEL_WEEKDAY))
+
+#define IS_RTC_ALARM_MASK(MASK)  (((MASK) & ~(RTC_ALARMMASK_ALL)) == (uint32_t)RESET)
+
+#define IS_RTC_ALARM(ALARM)      (((ALARM) == RTC_ALARM_A) || ((ALARM) == RTC_ALARM_B))
+
+#define IS_RTC_ALARM_SUB_SECOND_VALUE(VALUE) ((VALUE) <= RTC_ALRMASSR_SS)
+
+#define IS_RTC_ALARM_SUB_SECOND_MASK(MASK)   (((MASK) == RTC_ALARMSUBSECONDMASK_ALL) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_1) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_2) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_3) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_4) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_5) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_6) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_7) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_8) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_9) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_10) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_11) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_12) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_13) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_SS14) || \
+                                              ((MASK) == RTC_ALARMSUBSECONDMASK_NONE))
+
+#define IS_RTC_ASYNCH_PREDIV(PREDIV)   ((PREDIV) <= (uint32_t)0x7F)
+
+#define IS_RTC_SYNCH_PREDIV(PREDIV)    ((PREDIV) <= (uint32_t)0x7FFF)
+
+#define IS_RTC_HOUR12(HOUR)            (((HOUR) > (uint32_t)0) && ((HOUR) <= (uint32_t)12))
+
+#define IS_RTC_HOUR24(HOUR)            ((HOUR) <= (uint32_t)23)
+
+#define IS_RTC_MINUTES(MINUTES)        ((MINUTES) <= (uint32_t)59)
+
+#define IS_RTC_SECONDS(SECONDS)        ((SECONDS) <= (uint32_t)59)
+
+/**
+  * @}
+  */
+
+/**
+  * @}
+  */
+  
+/* Private functions -------------------------------------------------------------*/
 /** @defgroup RTC_Private_Functions RTC Private Functions
   * @{
-  */    
+  */
 HAL_StatusTypeDef  RTC_EnterInitMode(RTC_HandleTypeDef* hrtc);
 uint8_t            RTC_ByteToBcd2(uint8_t Value);
 uint8_t            RTC_Bcd2ToByte(uint8_t Value);
 /**
   * @}
-  */  
+  */
+  
 
 /**
   * @}