Subversion Repositories DashDisplay

Rev

Rev 56 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32l1xx_hal_rtc_ex.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of RTC HAL Extended module.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * <h2><center>&copy; Copyright (c) 2017 STMicroelectronics.
  10.   * All rights reserved.</center></h2>
  11.   *
  12.   * This software component is licensed by ST under BSD 3-Clause license,
  13.   * the "License"; You may not use this file except in compliance with the
  14.   * License. You may obtain a copy of the License at:
  15.   *                        opensource.org/licenses/BSD-3-Clause
  16.   *
  17.   ******************************************************************************
  18.   */
  19.  
  20. /* Define to prevent recursive inclusion -------------------------------------*/
  21. #ifndef __STM32L1xx_HAL_RTC_EX_H
  22. #define __STM32L1xx_HAL_RTC_EX_H
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27.  
  28. /* Includes ------------------------------------------------------------------*/
  29. #include "stm32l1xx_hal_def.h"
  30.  
  31. /** @addtogroup STM32L1xx_HAL_Driver
  32.   * @{
  33.   */
  34.  
  35. /** @defgroup RTCEx RTCEx
  36.   * @{
  37.   */
  38.  
  39. /* Exported types ------------------------------------------------------------*/
  40. /** @defgroup RTCEx_Exported_Types RTCEx Exported Types
  41.   * @{
  42.   */
  43.  
  44. /**
  45.   * @brief  RTC Tamper structure definition
  46.   */
  47. typedef struct
  48. {
  49.   uint32_t Tamper;                      /*!< Specifies the Tamper Pin.
  50.                                              This parameter can be a value of @ref  RTCEx_Tamper_Pins_Definitions */
  51.  
  52.   uint32_t Trigger;                     /*!< Specifies the Tamper Trigger.
  53.                                              This parameter can be a value of @ref  RTCEx_Tamper_Trigger_Definitions */
  54.  
  55. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  56.   uint32_t Filter;                      /*!< Specifies the RTC Filter Tamper.
  57.                                              This parameter can be a value of @ref RTCEx_Tamper_Filter_Definitions */
  58.  
  59.   uint32_t SamplingFrequency;           /*!< Specifies the sampling frequency.
  60.                                              This parameter can be a value of @ref RTCEx_Tamper_Sampling_Frequencies_Definitions */
  61.  
  62.   uint32_t PrechargeDuration;           /*!< Specifies the Precharge Duration .
  63.                                              This parameter can be a value of @ref RTCEx_Tamper_Pin_Precharge_Duration_Definitions */
  64.  
  65.   uint32_t TamperPullUp;                /*!< Specifies the Tamper PullUp .
  66.                                              This parameter can be a value of @ref RTCEx_Tamper_Pull_Up_Definitions */
  67.  
  68.   uint32_t TimeStampOnTamperDetection;  /*!< Specifies the TimeStampOnTamperDetection.
  69.                                              This parameter can be a value of @ref RTCEx_Tamper_TimeStampOnTamperDetection_Definitions */
  70. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  71. } RTC_TamperTypeDef;
  72. /**
  73.   * @}
  74.   */
  75.  
  76. /* Exported constants --------------------------------------------------------*/
  77. /** @defgroup RTCEx_Exported_Constants RTCEx Exported Constants
  78.   * @{
  79.   */
  80.  
  81. /** @defgroup RTCEx_Output_selection_Definition RTCEx Output Selection Definition
  82.   * @{
  83.   */
  84. #define RTC_TR_RESERVED_MASK    (0x007F7F7FU)
  85. #define RTC_DR_RESERVED_MASK    (0x00FFFF3FU)
  86. #define RTC_INIT_MASK           (0xFFFFFFFFU)
  87. #define RTC_RSF_MASK            (0xFFFFFF5FU)
  88.  
  89. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  90. #define RTC_FLAGS_MASK          ((uint32_t)(RTC_FLAG_ALRAWF | RTC_FLAG_ALRBWF | RTC_FLAG_WUTWF | \
  91.                                             RTC_FLAG_SHPF | RTC_FLAG_INITS | RTC_FLAG_RSF | \
  92.                                             RTC_FLAG_INITF | RTC_FLAG_ALRAF | RTC_FLAG_ALRBF | \
  93.                                             RTC_FLAG_WUTF | RTC_FLAG_TSF | RTC_FLAG_TSOVF | \
  94.                                             RTC_FLAG_TAMP1F | RTC_FLAG_TAMP2F | RTC_FLAG_TAMP3F | \
  95.                                             RTC_FLAG_RECALPF))
  96. #else
  97. #define RTC_FLAGS_MASK          ((uint32_t)(RTC_FLAG_ALRAWF | RTC_FLAG_ALRBWF | RTC_FLAG_WUTWF | \
  98.                                             RTC_FLAG_SHPF | RTC_FLAG_INITS | RTC_FLAG_RSF | \
  99.                                             RTC_FLAG_INITF | RTC_FLAG_ALRAF | RTC_FLAG_ALRBF | \
  100.                                             RTC_FLAG_WUTF | RTC_FLAG_TSF | RTC_FLAG_TSOVF | \
  101.                                             RTC_FLAG_TAMP1F | \
  102.                                             RTC_FLAG_RECALPF))
  103.  
  104. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  105. /**
  106.   * @}
  107.   */
  108.  
  109. /** @defgroup RTCEx_Backup_Registers_Definition RTCEx Backup Registers Definition
  110.   * @{
  111.   */
  112. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  113. #define IS_RTC_SYNCH_PREDIV(PREDIV)    ((PREDIV) <= 0x7FFFU)
  114. #elif defined(STM32L100xB) || defined (STM32L151xB) || defined (STM32L152xB)
  115. #define IS_RTC_SYNCH_PREDIV(PREDIV)    ((PREDIV) <= 0x1FFFU)
  116. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  117. /**
  118.   * @}
  119.   */
  120.  
  121. /** @defgroup RTC_Interrupts_Definitions Interrupts Definitions
  122.   * @{
  123.   */
  124. #define RTC_IT_TS                         ((uint32_t)RTC_CR_TSIE)
  125. #define RTC_IT_WUT                        ((uint32_t)RTC_CR_WUTIE)
  126. #define RTC_IT_ALRB                       ((uint32_t)RTC_CR_ALRBIE)
  127. #define RTC_IT_ALRA                       ((uint32_t)RTC_CR_ALRAIE)
  128. #define RTC_IT_TAMP1                      ((uint32_t)(RTC_TAFCR_TAMPIE | RTC_TAFCR_TAMP1E))
  129. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  130. #define RTC_IT_TAMP2                      ((uint32_t)(RTC_TAFCR_TAMPIE | RTC_TAFCR_TAMP2E))
  131. #define RTC_IT_TAMP3                      ((uint32_t)(RTC_TAFCR_TAMPIE | RTC_TAFCR_TAMP3E))
  132. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  133. /**
  134.   * @}
  135.   */
  136.  
  137. /** @defgroup RTC_Flags_Definitions Flags Definitions
  138.   * @{
  139.   */
  140. #define RTC_FLAG_RECALPF                  ((uint32_t)RTC_ISR_RECALPF)
  141. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  142. #define RTC_FLAG_TAMP3F                   ((uint32_t)RTC_ISR_TAMP3F)
  143. #define RTC_FLAG_TAMP2F                   ((uint32_t)RTC_ISR_TAMP2F)
  144. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  145. #define RTC_FLAG_TAMP1F                   ((uint32_t)RTC_ISR_TAMP1F)
  146. #define RTC_FLAG_TSOVF                    ((uint32_t)RTC_ISR_TSOVF)
  147. #define RTC_FLAG_TSF                      ((uint32_t)RTC_ISR_TSF)
  148. #define RTC_FLAG_WUTF                     ((uint32_t)RTC_ISR_WUTF)
  149. #define RTC_FLAG_ALRBF                    ((uint32_t)RTC_ISR_ALRBF)
  150. #define RTC_FLAG_ALRAF                    ((uint32_t)RTC_ISR_ALRAF)
  151. #define RTC_FLAG_INITF                    ((uint32_t)RTC_ISR_INITF)
  152. #define RTC_FLAG_RSF                      ((uint32_t)RTC_ISR_RSF)
  153. #define RTC_FLAG_INITS                    ((uint32_t)RTC_ISR_INITS)
  154. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  155. #define RTC_FLAG_SHPF                     ((uint32_t)RTC_ISR_SHPF)
  156. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  157. #define RTC_FLAG_WUTWF                    ((uint32_t)RTC_ISR_WUTWF)
  158. #define RTC_FLAG_ALRBWF                   ((uint32_t)RTC_ISR_ALRBWF)
  159. #define RTC_FLAG_ALRAWF                   ((uint32_t)RTC_ISR_ALRAWF)
  160. /**
  161.   * @}
  162.   */
  163.  
  164. /** @defgroup RTCEx_Output_selection_Definitions Output selection Definitions
  165.   * @{
  166.   */
  167. #define RTC_OUTPUT_DISABLE             (0x00000000U)
  168. #define RTC_OUTPUT_ALARMA              (0x00200000U)
  169. #define RTC_OUTPUT_ALARMB              (0x00400000U)
  170. #define RTC_OUTPUT_WAKEUP              (0x00600000U)
  171.  
  172. #define IS_RTC_OUTPUT(OUTPUT) (((OUTPUT) == RTC_OUTPUT_DISABLE) || \
  173.                                ((OUTPUT) == RTC_OUTPUT_ALARMA)  || \
  174.                                ((OUTPUT) == RTC_OUTPUT_ALARMB)  || \
  175.                                ((OUTPUT) == RTC_OUTPUT_WAKEUP))
  176. /**
  177.   * @}
  178.   */
  179.  
  180. /** @defgroup RTCEx_Backup_Registers_Definitions Backup Registers Definitions
  181.   * @{
  182.   */
  183. #if RTC_BKP_NUMBER > 0
  184. #define RTC_BKP_DR0                       (0x00000000U)
  185. #define RTC_BKP_DR1                       (0x00000001U)
  186. #define RTC_BKP_DR2                       (0x00000002U)
  187. #define RTC_BKP_DR3                       (0x00000003U)
  188. #define RTC_BKP_DR4                       (0x00000004U)
  189. #endif /* RTC_BKP_NUMBER > 0 */
  190.  
  191. #if RTC_BKP_NUMBER > 5
  192. #define RTC_BKP_DR5                       (0x00000005U)
  193. #define RTC_BKP_DR6                       (0x00000006U)
  194. #define RTC_BKP_DR7                       (0x00000007U)
  195. #define RTC_BKP_DR8                       (0x00000008U)
  196. #define RTC_BKP_DR9                       (0x00000009U)
  197. #define RTC_BKP_DR10                      (0x0000000AU)
  198. #define RTC_BKP_DR11                      (0x0000000BU)
  199. #define RTC_BKP_DR12                      (0x0000000CU)
  200. #define RTC_BKP_DR13                      (0x0000000DU)
  201. #define RTC_BKP_DR14                      (0x0000000EU)
  202. #define RTC_BKP_DR15                      (0x0000000FU)
  203. #define RTC_BKP_DR16                      (0x00000010U)
  204. #define RTC_BKP_DR17                      (0x00000011U)
  205. #define RTC_BKP_DR18                      (0x00000012U)
  206. #define RTC_BKP_DR19                      (0x00000013U)
  207. #endif /* RTC_BKP_NUMBER > 5 */
  208.  
  209. #if RTC_BKP_NUMBER > 20
  210. #define RTC_BKP_DR20                      (0x00000014U)
  211. #define RTC_BKP_DR21                      (0x00000015U)
  212. #define RTC_BKP_DR22                      (0x00000016U)
  213. #define RTC_BKP_DR23                      (0x00000017U)
  214. #define RTC_BKP_DR24                      (0x00000018U)
  215. #define RTC_BKP_DR25                      (0x00000019U)
  216. #define RTC_BKP_DR26                      (0x0000001AU)
  217. #define RTC_BKP_DR27                      (0x0000001BU)
  218. #define RTC_BKP_DR28                      (0x0000001CU)
  219. #define RTC_BKP_DR29                      (0x0000001DU)
  220. #define RTC_BKP_DR30                      (0x0000001EU)
  221. #define RTC_BKP_DR31                      (0x0000001FU)
  222. #endif /* RTC_BKP_NUMBER > 20 */
  223.  
  224. #define IS_RTC_BKP(BKP)                   ((BKP) < (uint32_t) RTC_BKP_NUMBER)
  225. /**
  226.   * @}
  227.   */
  228.  
  229. /** @defgroup RTCEx_Time_Stamp_Edges_Definitions Time Stamp Edges Definitions
  230.   * @{
  231.   */
  232. #define RTC_TIMESTAMPEDGE_RISING          (0x00000000U)
  233. #define RTC_TIMESTAMPEDGE_FALLING         (0x00000008U)
  234.  
  235. #define IS_TIMESTAMP_EDGE(EDGE) (((EDGE) == RTC_TIMESTAMPEDGE_RISING) || \
  236.                                  ((EDGE) == RTC_TIMESTAMPEDGE_FALLING))
  237. /**
  238.   * @}
  239.   */
  240.  
  241. /** @defgroup RTCEx_Tamper_Pins_Definitions Tamper Pins Definitions
  242.   * @{
  243.   */
  244. #define RTC_TAMPER_1                    RTC_TAFCR_TAMP1E
  245. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  246. #define RTC_TAMPER_2                    RTC_TAFCR_TAMP2E
  247. #define RTC_TAMPER_3                    RTC_TAFCR_TAMP3E
  248. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  249.  
  250. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  251. #define IS_RTC_TAMPER(TAMPER) (((~(RTC_TAMPER_1|RTC_TAMPER_2|RTC_TAMPER_3) & (TAMPER)) == (uint32_t)RESET) && ((TAMPER) != (uint32_t)RESET))
  252. #else
  253. #define IS_RTC_TAMPER(TAMPER) ((TAMPER) == RTC_TAMPER_1)
  254. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  255. /**
  256.   * @}
  257.   */
  258.  
  259. /** @defgroup RTCEx_Tamper_Trigger_Definitions Tamper Trigger Definitions
  260.   * @{
  261.   */
  262. #define RTC_TAMPERTRIGGER_RISINGEDGE       (0x00000000U)
  263. #define RTC_TAMPERTRIGGER_FALLINGEDGE      (0x00000002U)
  264. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  265. #define RTC_TAMPERTRIGGER_LOWLEVEL         RTC_TAMPERTRIGGER_RISINGEDGE
  266. #define RTC_TAMPERTRIGGER_HIGHLEVEL        RTC_TAMPERTRIGGER_FALLINGEDGE
  267. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  268.  
  269. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  270. #define IS_RTC_TAMPER_TRIGGER(TRIGGER) (((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE) || \
  271.                                         ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE) || \
  272.                                         ((TRIGGER) == RTC_TAMPERTRIGGER_LOWLEVEL) || \
  273.                                         ((TRIGGER) == RTC_TAMPERTRIGGER_HIGHLEVEL))
  274. #elif defined(STM32L100xB) || defined (STM32L151xB) || defined (STM32L152xB)
  275. #define IS_RTC_TAMPER_TRIGGER(TRIGGER) (((TRIGGER) == RTC_TAMPERTRIGGER_RISINGEDGE) || \
  276.                                         ((TRIGGER) == RTC_TAMPERTRIGGER_FALLINGEDGE))
  277. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  278. /**
  279.   * @}
  280.   */
  281.  
  282. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  283. /** @defgroup RTCEx_Tamper_Filter_Definitions RTCex Tamper Filter Definitions
  284.   * @{
  285.   */
  286. #define RTC_TAMPERFILTER_DISABLE   (0x00000000U)  /*!< Tamper filter is disabled */
  287.  
  288. #define RTC_TAMPERFILTER_2SAMPLE   (0x00000800U)  /*!< Tamper is activated after 2
  289.                                                                 consecutive samples at the active level */
  290. #define RTC_TAMPERFILTER_4SAMPLE   (0x00001000U)  /*!< Tamper is activated after 4
  291.                                                                 consecutive samples at the active level */
  292. #define RTC_TAMPERFILTER_8SAMPLE   (0x00001800U)  /*!< Tamper is activated after 8
  293.                                                                 consecutive samples at the active level. */
  294.  
  295. #define IS_RTC_TAMPER_FILTER(FILTER)  (((FILTER) == RTC_TAMPERFILTER_DISABLE) || \
  296.                                    ((FILTER) == RTC_TAMPERFILTER_2SAMPLE) || \
  297.                                    ((FILTER) == RTC_TAMPERFILTER_4SAMPLE) || \
  298.                                    ((FILTER) == RTC_TAMPERFILTER_8SAMPLE))
  299. /**
  300.   * @}
  301.   */
  302.  
  303. /** @defgroup RTCEx_Tamper_Sampling_Frequencies_Definitions RTCEx Tamper Sampling Frequencies Definitions
  304.   * @{
  305.   */
  306. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768  (0x00000000U)  /*!< Each of the tamper inputs are sampled
  307.                                                                              with a frequency =  RTCCLK / 32768 */
  308. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384  (0x00000100U)  /*!< Each of the tamper inputs are sampled
  309.                                                                              with a frequency =  RTCCLK / 16384 */
  310. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192   (0x00000200U)  /*!< Each of the tamper inputs are sampled
  311.                                                                              with a frequency =  RTCCLK / 8192  */
  312. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096   (0x00000300U)  /*!< Each of the tamper inputs are sampled
  313.                                                                              with a frequency =  RTCCLK / 4096  */
  314. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048   (0x00000400U)  /*!< Each of the tamper inputs are sampled
  315.                                                                              with a frequency =  RTCCLK / 2048  */
  316. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024   (0x00000500U)  /*!< Each of the tamper inputs are sampled
  317.                                                                              with a frequency =  RTCCLK / 1024  */
  318. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512    (0x00000600U)  /*!< Each of the tamper inputs are sampled
  319.                                                                              with a frequency =  RTCCLK / 512   */
  320. #define RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256    (0x00000700U)  /*!< Each of the tamper inputs are sampled
  321.                                                                              with a frequency =  RTCCLK / 256   */
  322.  
  323. #define IS_RTC_TAMPER_SAMPLING_FREQ(FREQ) (((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV32768)|| \
  324.                                        ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV16384)|| \
  325.                                        ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV8192) || \
  326.                                        ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV4096) || \
  327.                                        ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV2048) || \
  328.                                        ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV1024) || \
  329.                                        ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV512)  || \
  330.                                        ((FREQ) == RTC_TAMPERSAMPLINGFREQ_RTCCLK_DIV256))
  331. /**
  332.   * @}
  333.   */
  334.  
  335. /** @defgroup RTCEx_Tamper_Pin_Precharge_Duration_Definitions RTCEx Tamper Pin Precharge Duration Definitions
  336.   * @{
  337.   */
  338. #define RTC_TAMPERPRECHARGEDURATION_1RTCCLK (0x00000000U)  /*!< Tamper pins are pre-charged before
  339.                                                                          sampling during 1 RTCCLK cycle */
  340. #define RTC_TAMPERPRECHARGEDURATION_2RTCCLK (0x00002000U)  /*!< Tamper pins are pre-charged before
  341.                                                                          sampling during 2 RTCCLK cycles */
  342. #define RTC_TAMPERPRECHARGEDURATION_4RTCCLK (0x00004000U)  /*!< Tamper pins are pre-charged before
  343.                                                                          sampling during 4 RTCCLK cycles */
  344. #define RTC_TAMPERPRECHARGEDURATION_8RTCCLK (0x00006000U)  /*!< Tamper pins are pre-charged before
  345.                                                                          sampling during 8 RTCCLK cycles */
  346.  
  347. #define IS_RTC_TAMPER_PRECHARGE_DURATION(DURATION) (((DURATION) == RTC_TAMPERPRECHARGEDURATION_1RTCCLK) || \
  348.                                                 ((DURATION) == RTC_TAMPERPRECHARGEDURATION_2RTCCLK) || \
  349.                                                 ((DURATION) == RTC_TAMPERPRECHARGEDURATION_4RTCCLK) || \
  350.                                                 ((DURATION) == RTC_TAMPERPRECHARGEDURATION_8RTCCLK))
  351. /**
  352.   * @}
  353.   */
  354.  
  355. /** @defgroup RTCEx_Tamper_TimeStampOnTamperDetection_Definitions TimeStampOnTamperDetection Definitions
  356.   * @{
  357.   */
  358. #define RTC_TIMESTAMPONTAMPERDETECTION_ENABLE  ((uint32_t)RTC_TAFCR_TAMPTS)  /*!< TimeStamp on Tamper Detection event saved */
  359. #define RTC_TIMESTAMPONTAMPERDETECTION_DISABLE (0x00000000U)        /*!< TimeStamp on Tamper Detection event is not saved */
  360.  
  361. #define IS_RTC_TAMPER_TIMESTAMPONTAMPER_DETECTION(DETECTION) (((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_ENABLE) || \
  362.                                                           ((DETECTION) == RTC_TIMESTAMPONTAMPERDETECTION_DISABLE))
  363. /**
  364.   * @}
  365.   */
  366.  
  367. /** @defgroup RTCEx_Tamper_Pull_Up_Definitions Tamper Pull-Up Definitions
  368.   * @{
  369.   */
  370. #define RTC_TAMPER_PULLUP_ENABLE  (0x00000000U)            /*!< TimeStamp on Tamper Detection event saved */
  371. #define RTC_TAMPER_PULLUP_DISABLE (RTC_TAFCR_TAMPPUDIS)   /*!< TimeStamp on Tamper Detection event is not saved */
  372.  
  373. #define IS_RTC_TAMPER_PULLUP_STATE(STATE) (((STATE) == RTC_TAMPER_PULLUP_ENABLE) || \
  374.                                        ((STATE) == RTC_TAMPER_PULLUP_DISABLE))
  375. /**
  376.   * @}
  377.   */
  378. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  379.  
  380. /** @defgroup RTCEx_Wakeup_Timer_Definitions Wakeup Timer Definitions
  381.   * @{
  382.   */
  383. #define RTC_WAKEUPCLOCK_RTCCLK_DIV16        (0x00000000U)
  384. #define RTC_WAKEUPCLOCK_RTCCLK_DIV8         (0x00000001U)
  385. #define RTC_WAKEUPCLOCK_RTCCLK_DIV4         (0x00000002U)
  386. #define RTC_WAKEUPCLOCK_RTCCLK_DIV2         (0x00000003U)
  387. #define RTC_WAKEUPCLOCK_CK_SPRE_16BITS      (0x00000004U)
  388. #define RTC_WAKEUPCLOCK_CK_SPRE_17BITS      (0x00000006U)
  389.  
  390. #define IS_RTC_WAKEUP_CLOCK(CLOCK) (((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV16)   || \
  391.                                 ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV8)    || \
  392.                                 ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV4)    || \
  393.                                 ((CLOCK) == RTC_WAKEUPCLOCK_RTCCLK_DIV2)    || \
  394.                                 ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_16BITS) || \
  395.                                 ((CLOCK) == RTC_WAKEUPCLOCK_CK_SPRE_17BITS))
  396.  
  397. #define IS_RTC_WAKEUP_COUNTER(COUNTER)  ((COUNTER) <= 0xFFFF)
  398. /**
  399.   * @}
  400.   */
  401.  
  402. /** @defgroup RTCEx_Digital_Calibration_Definitions Digital Calibration Definitions
  403.   * @{
  404.   */
  405. #define RTC_CALIBSIGN_POSITIVE            (0x00000000U)
  406. #define RTC_CALIBSIGN_NEGATIVE            (0x00000080U)
  407.  
  408. #define IS_RTC_CALIB_SIGN(SIGN) (((SIGN) == RTC_CALIBSIGN_POSITIVE) || \
  409.                                  ((SIGN) == RTC_CALIBSIGN_NEGATIVE))
  410.  
  411. #define IS_RTC_CALIB_VALUE(VALUE) ((VALUE) < 0x20)
  412. /**
  413.   * @}
  414.   */
  415.  
  416. /** @defgroup RTCEx_Smooth_Calib_Period_Definitions Smooth Calib Period Definitions
  417.   * @{
  418.   */
  419. #define RTC_SMOOTHCALIB_PERIOD_32SEC   (0x00000000U) /*!<  If RTCCLK = 32768 Hz, Smooth calibation
  420.                                                                     period is 32s,  else 2exp20 RTCCLK seconds */
  421. #define RTC_SMOOTHCALIB_PERIOD_16SEC   (0x00002000U) /*!<  If RTCCLK = 32768 Hz, Smooth calibation
  422.                                                                     period is 16s, else 2exp19 RTCCLK seconds */
  423. #define RTC_SMOOTHCALIB_PERIOD_8SEC    (0x00004000U) /*!<  If RTCCLK = 32768 Hz, Smooth calibation
  424.                                                                     period is 8s, else 2exp18 RTCCLK seconds */
  425.  
  426. #define IS_RTC_SMOOTH_CALIB_PERIOD(PERIOD) (((PERIOD) == RTC_SMOOTHCALIB_PERIOD_32SEC) || \
  427.                                             ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_16SEC) || \
  428.                                             ((PERIOD) == RTC_SMOOTHCALIB_PERIOD_8SEC))
  429. /**
  430.   * @}
  431.   */
  432.  
  433. /** @defgroup RTCEx_Smooth_Calib_Plus_Pulses_Definitions Smooth Calib Plus Pulses Definitions
  434.   * @{
  435.   */
  436. #define RTC_SMOOTHCALIB_PLUSPULSES_SET    (0x00008000U) /*!<  The number of RTCCLK pulses added
  437.                                                                        during a X -second window = Y - CALM[8:0]
  438.                                                                        with Y = 512, 256, 128 when X = 32, 16, 8 */
  439. #define RTC_SMOOTHCALIB_PLUSPULSES_RESET  (0x00000000U) /*!<  The number of RTCCLK pulses subbstited
  440.                                                                        during a 32-second window =   CALM[8:0] */
  441.  
  442. #define IS_RTC_SMOOTH_CALIB_PLUS(PLUS) (((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_SET) || \
  443.                                         ((PLUS) == RTC_SMOOTHCALIB_PLUSPULSES_RESET))
  444. /**
  445.   * @}
  446.   */
  447.  
  448. /** @defgroup RTCEx_Smooth_Calib_Minus_Pulses_Definitions Smooth Calib Minus Pulses Definitions
  449.   * @{
  450.   */
  451. #define  IS_RTC_SMOOTH_CALIB_MINUS(VALUE) ((VALUE) <= 0x000001FFU)
  452. /**
  453.   * @}
  454.   */
  455.  
  456. /** @defgroup RTCEx_Add_1_Second_Parameter_Definitions Add 1 Second Parameter Definitions
  457.   * @{
  458.   */
  459. #define RTC_SHIFTADD1S_RESET      (0x00000000U)
  460. #define RTC_SHIFTADD1S_SET        (0x80000000U)
  461.  
  462. #define IS_RTC_SHIFT_ADD1S(SEL) (((SEL) == RTC_SHIFTADD1S_RESET) || \
  463.                                  ((SEL) == RTC_SHIFTADD1S_SET))
  464. /**
  465.   * @}
  466.   */
  467.  
  468. /** @defgroup RTCEx_Substract_Fraction_Of_Second_Value Substract Fraction Of Second Value
  469.   * @{
  470.   */
  471. #define IS_RTC_SHIFT_SUBFS(FS) ((FS) <= 0x00007FFFU)
  472. /**
  473.   * @}
  474.   */
  475.  
  476. /** @defgroup RTCEx_Calib_Output_Selection_Definitions Calib Output Selection Definitions
  477.   * @{
  478.   */
  479. #define RTC_CALIBOUTPUT_512HZ            (0x00000000U)
  480. #define RTC_CALIBOUTPUT_1HZ              (0x00080000U)
  481.  
  482. #define IS_RTC_CALIB_OUTPUT(OUTPUT)  (((OUTPUT) == RTC_CALIBOUTPUT_512HZ) || \
  483.                                       ((OUTPUT) == RTC_CALIBOUTPUT_1HZ))
  484. /**
  485.   * @}
  486.   */
  487.  
  488. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  489. /** @defgroup RTC_Alarm_Sub_Seconds_Value Alarm Sub Seconds Value
  490.   * @{
  491.   */
  492. #define IS_RTC_ALARM_SUB_SECOND_VALUE(VALUE) ((VALUE) <= 0x00007FFFU)
  493. /**
  494.   * @}
  495.   */
  496.  
  497. /** @defgroup RTC_Alarm_Sub_Seconds_Masks_Definitions Alarm Sub Seconds Masks Definitions
  498.   * @{
  499.   */
  500. #define RTC_ALARMSUBSECONDMASK_ALL         (0x00000000U)  /*!< All Alarm SS fields are masked.
  501.                                                                         There is no comparison on sub seconds
  502.                                                                         for Alarm */
  503. #define RTC_ALARMSUBSECONDMASK_SS14_1      (0x01000000U)  /*!< SS[14:1] are don't care in Alarm
  504.                                                                         comparison. Only SS[0] is compared.    */
  505. #define RTC_ALARMSUBSECONDMASK_SS14_2      (0x02000000U)  /*!< SS[14:2] are don't care in Alarm
  506.                                                                         comparison. Only SS[1:0] are compared  */
  507. #define RTC_ALARMSUBSECONDMASK_SS14_3      (0x03000000U)  /*!< SS[14:3] are don't care in Alarm
  508.                                                                         comparison. Only SS[2:0] are compared  */
  509. #define RTC_ALARMSUBSECONDMASK_SS14_4      (0x04000000U)  /*!< SS[14:4] are don't care in Alarm
  510.                                                                         comparison. Only SS[3:0] are compared  */
  511. #define RTC_ALARMSUBSECONDMASK_SS14_5      (0x05000000U)  /*!< SS[14:5] are don't care in Alarm
  512.                                                                         comparison. Only SS[4:0] are compared  */
  513. #define RTC_ALARMSUBSECONDMASK_SS14_6      (0x06000000U)  /*!< SS[14:6] are don't care in Alarm
  514.                                                                         comparison. Only SS[5:0] are compared  */
  515. #define RTC_ALARMSUBSECONDMASK_SS14_7      (0x07000000U)  /*!< SS[14:7] are don't care in Alarm
  516.                                                                         comparison. Only SS[6:0] are compared  */
  517. #define RTC_ALARMSUBSECONDMASK_SS14_8      (0x08000000U)  /*!< SS[14:8] are don't care in Alarm
  518.                                                                         comparison. Only SS[7:0] are compared  */
  519. #define RTC_ALARMSUBSECONDMASK_SS14_9      (0x09000000U)  /*!< SS[14:9] are don't care in Alarm
  520.                                                                         comparison. Only SS[8:0] are compared  */
  521. #define RTC_ALARMSUBSECONDMASK_SS14_10     (0x0A000000U)  /*!< SS[14:10] are don't care in Alarm
  522.                                                                         comparison. Only SS[9:0] are compared  */
  523. #define RTC_ALARMSUBSECONDMASK_SS14_11     (0x0B000000U)  /*!< SS[14:11] are don't care in Alarm
  524.                                                                         comparison. Only SS[10:0] are compared */
  525. #define RTC_ALARMSUBSECONDMASK_SS14_12     (0x0C000000U)  /*!< SS[14:12] are don't care in Alarm
  526.                                                                         comparison.Only SS[11:0] are compared  */
  527. #define RTC_ALARMSUBSECONDMASK_SS14_13     (0x0D000000U)  /*!< SS[14:13] are don't care in Alarm
  528.                                                                         comparison. Only SS[12:0] are compared */
  529. #define RTC_ALARMSUBSECONDMASK_SS14        (0x0E000000U)  /*!< SS[14] is don't care in Alarm
  530.                                                                         comparison.Only SS[13:0] are compared  */
  531. #define RTC_ALARMSUBSECONDMASK_NONE        (0x0F000000U)  /*!< SS[14:0] are compared and must match
  532.                                                                         to activate alarm. */
  533.  
  534. #define IS_RTC_ALARM_SUB_SECOND_MASK(MASK)   (((MASK) == RTC_ALARMSUBSECONDMASK_ALL) || \
  535.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_1) || \
  536.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_2) || \
  537.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_3) || \
  538.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_4) || \
  539.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_5) || \
  540.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_6) || \
  541.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_7) || \
  542.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_8) || \
  543.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_9) || \
  544.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_10) || \
  545.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_11) || \
  546.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_12) || \
  547.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14_13) || \
  548.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_SS14) || \
  549.                                               ((MASK) == RTC_ALARMSUBSECONDMASK_NONE))
  550. /**
  551.   * @}
  552.   */
  553. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  554.  
  555. /**
  556.   * @}
  557.   */
  558.  
  559. /* Exported macros -----------------------------------------------------------*/
  560. /** @defgroup RTCEx_Exported_Macros RTCEx Exported Macros
  561.   * @{
  562.   */
  563.  
  564. /* ---------------------------------WAKEUPTIMER---------------------------------*/
  565. /** @defgroup RTCEx_WakeUp_Timer RTC WakeUp Timer
  566.   * @{
  567.   */
  568. /**
  569.   * @brief Enable the RTC WakeUp Timer peripheral.
  570.   * @param  __HANDLE__ specifies the RTC handle.
  571.   * @retval None
  572.   */
  573. #define __HAL_RTC_WAKEUPTIMER_ENABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR |= (RTC_CR_WUTE))
  574.  
  575. /**
  576.   * @brief Enable the RTC TimeStamp peripheral.
  577.   * @param  __HANDLE__ specifies the RTC handle.
  578.   * @retval None
  579.   */
  580. #define __HAL_RTC_TIMESTAMP_ENABLE(__HANDLE__)                        ((__HANDLE__)->Instance->CR |= (RTC_CR_TSE))
  581.  
  582. /**
  583.   * @brief Disable the RTC WakeUp Timer peripheral.
  584.   * @param  __HANDLE__ specifies the RTC handle.
  585.   * @retval None
  586.   */
  587. #define __HAL_RTC_WAKEUPTIMER_DISABLE(__HANDLE__)                     ((__HANDLE__)->Instance->CR &= ~(RTC_CR_WUTE))
  588.  
  589. /**
  590.   * @brief Disable the RTC TimeStamp peripheral.
  591.   * @param  __HANDLE__ specifies the RTC handle.
  592.   * @retval None
  593.   */
  594. #define __HAL_RTC_TIMESTAMP_DISABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR &= ~(RTC_CR_TSE))
  595.  
  596. /**
  597.   * @brief  Enable the Coarse calibration process.
  598.   * @param  __HANDLE__ specifies the RTC handle.
  599.   * @retval None
  600.   */
  601. #define __HAL_RTC_COARSE_CALIB_ENABLE(__HANDLE__)                       ((__HANDLE__)->Instance->CR |= (RTC_CR_DCE))
  602.  
  603. /**
  604.   * @brief  Disable the Coarse calibration process.
  605.   * @param  __HANDLE__ specifies the RTC handle.
  606.   * @retval None
  607.   */
  608. #define __HAL_RTC_COARSE_CALIB_DISABLE(__HANDLE__)                      ((__HANDLE__)->Instance->CR &= ~(RTC_CR_DCE))
  609.  
  610. /**
  611.   * @brief  Enable the RTC calibration output.
  612.   * @param  __HANDLE__ specifies the RTC handle.
  613.   * @retval None
  614.   */
  615. #define __HAL_RTC_CALIBRATION_OUTPUT_ENABLE(__HANDLE__)                 ((__HANDLE__)->Instance->CR |= (RTC_CR_COE))
  616.  
  617. /**
  618.   * @brief  Disable the calibration output.
  619.   * @param  __HANDLE__ specifies the RTC handle.
  620.   * @retval None
  621.   */
  622. #define __HAL_RTC_CALIBRATION_OUTPUT_DISABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR &= ~(RTC_CR_COE))
  623.  
  624. /**
  625.   * @brief  Enable the clock reference detection.
  626.   * @param  __HANDLE__ specifies the RTC handle.
  627.   * @retval None
  628.   */
  629. #define __HAL_RTC_CLOCKREF_DETECTION_ENABLE(__HANDLE__)                 ((__HANDLE__)->Instance->CR |= (RTC_CR_REFCKON))
  630.  
  631. /**
  632.   * @brief  Disable the clock reference detection.
  633.   * @param  __HANDLE__ specifies the RTC handle.
  634.   * @retval None
  635.   */
  636. #define __HAL_RTC_CLOCKREF_DETECTION_DISABLE(__HANDLE__)                ((__HANDLE__)->Instance->CR &= ~(RTC_CR_REFCKON))
  637.  
  638. /**
  639.   * @brief  Enable the RTC TimeStamp interrupt.
  640.   * @param  __HANDLE__ specifies the RTC handle.
  641.   * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt sources to be enabled or disabled.
  642.   *         This parameter can be:
  643.   *             @arg RTC_IT_TS: TimeStamp interrupt
  644.   * @retval None
  645.   */
  646. #define __HAL_RTC_TIMESTAMP_ENABLE_IT(__HANDLE__, __INTERRUPT__)      ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
  647.  
  648. /**
  649.   * @brief  Enable the RTC WakeUpTimer interrupt.
  650.   * @param  __HANDLE__ specifies the RTC handle.
  651.   * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be enabled or disabled.
  652.   *         This parameter can be:
  653.   *            @arg RTC_IT_WUT:  WakeUpTimer A interrupt
  654.   * @retval None
  655.   */
  656. #define __HAL_RTC_WAKEUPTIMER_ENABLE_IT(__HANDLE__, __INTERRUPT__)    ((__HANDLE__)->Instance->CR |= (__INTERRUPT__))
  657.  
  658. /**
  659.   * @brief  Disable the RTC TimeStamp interrupt.
  660.   * @param  __HANDLE__ specifies the RTC handle.
  661.   * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt sources to be enabled or disabled.
  662.   *          This parameter can be:
  663.   *             @arg RTC_IT_TS: TimeStamp interrupt
  664.   * @retval None
  665.   */
  666. #define __HAL_RTC_TIMESTAMP_DISABLE_IT(__HANDLE__, __INTERRUPT__)     ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
  667.  
  668. /**
  669.   * @brief  Disable the RTC WakeUpTimer interrupt.
  670.   * @param  __HANDLE__ specifies the RTC handle.
  671.   * @param  __INTERRUPT__ specifies the RTC WakeUpTimer interrupt sources to be enabled or disabled.
  672.   *         This parameter can be:
  673.   *            @arg RTC_IT_WUT:  WakeUpTimer A interrupt
  674.   * @retval None
  675.   */
  676. #define __HAL_RTC_WAKEUPTIMER_DISABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__))
  677.  
  678. /**
  679.   * @brief  Enable the RTC Tamper1 input detection.
  680.   * @param  __HANDLE__ specifies the RTC handle.
  681.   * @retval None
  682.   */
  683. #define __HAL_RTC_TAMPER1_ENABLE(__HANDLE__)                         SET_BIT((__HANDLE__)->Instance->TAFCR, RTC_TAFCR_TAMP1E)
  684.  
  685. /**
  686.   * @brief  Disable the RTC Tamper1 input detection.
  687.   * @param  __HANDLE__ specifies the RTC handle.
  688.   * @retval None
  689.   */
  690. #define __HAL_RTC_TAMPER1_DISABLE(__HANDLE__)                        CLEAR_BIT((__HANDLE__)->Instance->TAFCR, RTC_TAFCR_TAMP1E)
  691.  
  692. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC)\
  693.   || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA)\
  694.   || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA)\
  695.   || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  696. /**
  697.   * @brief  Enable the RTC Tamper2 input detection.
  698.   * @param  __HANDLE__ specifies the RTC handle.
  699.   * @retval None
  700.   */
  701. #define __HAL_RTC_TAMPER2_ENABLE(__HANDLE__)                         SET_BIT((__HANDLE__)->Instance->TAFCR, RTC_TAFCR_TAMP2E)
  702.  
  703. /**
  704.   * @brief  Disable the RTC Tamper2 input detection.
  705.   * @param  __HANDLE__ specifies the RTC handle.
  706.   * @retval None
  707.   */
  708. #define __HAL_RTC_TAMPER2_DISABLE(__HANDLE__)                        CLEAR_BIT((__HANDLE__)->Instance->TAFCR, RTC_TAFCR_TAMP2E)
  709.  
  710. /**
  711.   * @brief  Enable the RTC Tamper3 input detection.
  712.   * @param  __HANDLE__ specifies the RTC handle.
  713.   * @retval None
  714.   */
  715. #define __HAL_RTC_TAMPER3_ENABLE(__HANDLE__)                         SET_BIT((__HANDLE__)->Instance->TAFCR, RTC_TAFCR_TAMP3E)
  716.  
  717. /**
  718.   * @brief  Disable the RTC Tamper3 input detection.
  719.   * @param  __HANDLE__ specifies the RTC handle.
  720.   * @retval None
  721.   */
  722. #define __HAL_RTC_TAMPER3_DISABLE(__HANDLE__)                        CLEAR_BIT((__HANDLE__)->Instance->TAFCR, RTC_TAFCR_TAMP3E)
  723.  
  724.  
  725. /**
  726.   * @brief  Check whether the specified RTC Tamper interrupt has occurred or not.
  727.   * @param  __HANDLE__ specifies the RTC handle.
  728.   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt to check.
  729.   *         This parameter can be:
  730.   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
  731.   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt
  732.   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt
  733.   * @retval None
  734.   */
  735. #define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__) (((__INTERRUPT__) == RTC_IT_TAMP1) ? (((((__HANDLE__)->Instance->ISR) & RTC_ISR_TAMP1F) != RESET) ? SET : RESET) : \
  736.                                                            ((__INTERRUPT__) == RTC_IT_TAMP2) ? (((((__HANDLE__)->Instance->ISR) & RTC_ISR_TAMP2F) != RESET) ? SET : RESET) : \
  737.                                                            (((((__HANDLE__)->Instance->ISR) & RTC_ISR_TAMP3F) != RESET) ? SET : RESET))
  738. #else
  739. /**
  740.   * @brief  Check whether the specified RTC Tamper interrupt has occurred or not.
  741.   * @param  __HANDLE__ specifies the RTC handle.
  742.   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt to check.
  743.   *         This parameter can be:
  744.   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
  745.   * @retval None
  746.   */
  747. #define __HAL_RTC_TAMPER_GET_IT(__HANDLE__, __INTERRUPT__) (((((__HANDLE__)->Instance->ISR) & RTC_ISR_TAMP1F) != RESET) ? SET : RESET)
  748.  
  749. #endif
  750.  
  751. /**
  752.   * @brief  Enable the RTC Tamper interrupt.
  753.   * @param  __HANDLE__ specifies the RTC handle.
  754.   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt sources to be enabled
  755.   *          This parameter can be any combination of the following values:
  756.   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
  757.   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt (*)
  758.   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt (*)
  759.   * @note   (*) Available only on devices STM32L100xBA, STM32L151xBA, STM32L152xBA, STM32L100xC,
  760.   *         STM32L151xC, STM32L152xC, STM32L162xC, STM32L151xCA, STM32L151xD, STM32L152xCA,
  761.   *         STM32L152xD, STM32L162xCA, STM32L162xD, STM32L151xE, STM32L152xE, STM32L162xE
  762.   *         STM32L151xDX, STM32L152xDX, STM32L162xDX
  763.   * @retval None
  764.   */
  765. #define __HAL_RTC_TAMPER_ENABLE_IT(__HANDLE__, __INTERRUPT__)         SET_BIT(((__HANDLE__)->Instance->TAFCR), RTC_TAFCR_TAMPIE)
  766.  
  767. /**
  768.   * @brief  Disable the RTC Tamper interrupt.
  769.   * @param  __HANDLE__ specifies the RTC handle.
  770.   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt sources to be disabled.
  771.   *         This parameter can be any combination of the following values:
  772.   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
  773.   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt (*)
  774.   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt (*)
  775.   * @note   (*) Available only on devices STM32L100xBA, STM32L151xBA, STM32L152xBA, STM32L100xC,
  776.   *         STM32L151xC, STM32L152xC, STM32L162xC, STM32L151xCA, STM32L151xD, STM32L152xCA,
  777.   *         STM32L152xD, STM32L162xCA, STM32L162xD, STM32L151xE, STM32L152xE, STM32L162xE
  778.   *         STM32L151xDX, STM32L152xDX, STM32L162xDX
  779.   * @retval None
  780.   */
  781. #define __HAL_RTC_TAMPER_DISABLE_IT(__HANDLE__, __INTERRUPT__)        CLEAR_BIT(((__HANDLE__)->Instance->TAFCR), RTC_TAFCR_TAMPIE)
  782.  
  783. /**
  784.   * @brief  Check whether the specified RTC Tamper interrupt has been enabled or not.
  785.   * @param  __HANDLE__ specifies the RTC handle.
  786.   * @param  __INTERRUPT__ specifies the RTC Tamper interrupt source to check.
  787.   *         This parameter can be:
  788.   *            @arg  RTC_IT_TAMP1: Tamper1 interrupt
  789.   *            @arg  RTC_IT_TAMP2: Tamper2 interrupt (*)
  790.   *            @arg  RTC_IT_TAMP3: Tamper3 interrupt (*)
  791.   * @note   (*) Available only on devices STM32L100xBA, STM32L151xBA, STM32L152xBA, STM32L100xC,
  792.   *         STM32L151xC, STM32L152xC, STM32L162xC, STM32L151xCA, STM32L151xD, STM32L152xCA,
  793.   *         STM32L152xD, STM32L162xCA, STM32L162xD, STM32L151xE, STM32L152xE, STM32L162xE
  794.   *         STM32L151xDX, STM32L152xDX, STM32L162xDX
  795.   * @retval None
  796.   */
  797. #define __HAL_RTC_TAMPER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)    (((((__HANDLE__)->Instance->TAFCR) & RTC_TAFCR_TAMPIE) != RESET) ? SET : RESET)
  798.  
  799. /**
  800.   * @brief  Check whether the specified RTC WakeUpTimer interrupt has occurred or not.
  801.   * @param  __HANDLE__ specifies the RTC handle.
  802.   * @param  __FLAG__ specifies the RTC WakeUpTimer interrupt sources to be enabled or disabled.
  803.   *         This parameter can be:
  804.   *            @arg RTC_IT_WUT:  WakeUpTimer A interrupt
  805.   * @retval None
  806.   */
  807. #define __HAL_RTC_WAKEUPTIMER_GET_IT(__HANDLE__, __FLAG__)            (((((__HANDLE__)->Instance->ISR) & ((__FLAG__)>> 4)) != RESET)? SET : RESET)
  808.  
  809. /**
  810.   * @brief  Check whether the specified RTC Wake Up timer interrupt has been enabled or not.
  811.   * @param  __HANDLE__ specifies the RTC handle.
  812.   * @param  __INTERRUPT__ specifies the RTC Wake Up timer interrupt sources to check.
  813.   *         This parameter can be:
  814.   *            @arg RTC_IT_WUT:  WakeUpTimer interrupt
  815.   * @retval None
  816.   */
  817. #define __HAL_RTC_WAKEUPTIMER_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)   (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
  818.  
  819. /**
  820.   * @brief  Check whether the specified RTC TimeStamp interrupt has occurred or not.
  821.   * @param  __HANDLE__ specifies the RTC handle.
  822.   * @param  __INTERRUPT__ specifies the RTC TimeStamp interrupt sources to be enabled or disabled.
  823.   *         This parameter can be:
  824.   *            @arg RTC_IT_TS: TimeStamp interrupt
  825.   * @retval None
  826.   */
  827. #define __HAL_RTC_TIMESTAMP_GET_IT(__HANDLE__, __INTERRUPT__)              (((((__HANDLE__)->Instance->ISR) & ((__INTERRUPT__)>> 4)) != RESET)? SET : RESET)
  828.  
  829. /**
  830.   * @brief  Check whether the specified RTC Time Stamp interrupt has been enabled or not.
  831.   * @param  __HANDLE__ specifies the RTC handle.
  832.   * @param  __INTERRUPT__ specifies the RTC Time Stamp interrupt source to check.
  833.   *         This parameter can be:
  834.   *            @arg RTC_IT_TS: TimeStamp interrupt
  835.   * @retval None
  836.   */
  837. #define __HAL_RTC_TIMESTAMP_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     (((((__HANDLE__)->Instance->CR) & (__INTERRUPT__)) != RESET) ? SET : RESET)
  838.  
  839. /**
  840.   * @brief  Get the selected RTC TimeStamp's flag status.
  841.   * @param  __HANDLE__ specifies the RTC handle.
  842.   * @param  __FLAG__ specifies the RTC TimeStamp Flag sources to be enabled or disabled.
  843.   *         This parameter can be:
  844.   *            @arg RTC_FLAG_TSF
  845.   *            @arg RTC_FLAG_TSOVF
  846.   * @retval None
  847.   */
  848. #define __HAL_RTC_TIMESTAMP_GET_FLAG(__HANDLE__, __FLAG__)            (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET)
  849.  
  850. /**
  851.   * @brief  Get the selected RTC WakeUpTimer's flag status.
  852.   * @param  __HANDLE__ specifies the RTC handle.
  853.   * @param  __FLAG__ specifies the RTC WakeUpTimer Flag sources to be enabled or disabled.
  854.   *         This parameter can be:
  855.   *            @arg RTC_FLAG_WUTF
  856.   *            @arg RTC_FLAG_WUTWF
  857.   * @retval None
  858.   */
  859. #define __HAL_RTC_WAKEUPTIMER_GET_FLAG(__HANDLE__, __FLAG__)          (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET)
  860.  
  861. /**
  862.   * @brief  Get the selected RTC Tamper's flag status.
  863.   * @param  __HANDLE__ specifies the RTC handle.
  864.   * @param  __FLAG__ specifies the RTC Tamper Flag sources to be enabled or disabled.
  865.   *         This parameter can be:
  866.   *            @arg RTC_FLAG_TAMP1F
  867.   *            @arg RTC_FLAG_TAMP2F  (*)
  868.   *            @arg RTC_FLAG_TAMP3F  (*)
  869.   * @note   (*) Available only on devices STM32L100xBA, STM32L151xBA, STM32L152xBA, STM32L100xC,
  870.   *         STM32L151xC, STM32L152xC, STM32L162xC, STM32L151xCA, STM32L151xD, STM32L152xCA,
  871.   *         STM32L152xD, STM32L162xCA, STM32L162xD, STM32L151xE, STM32L152xE, STM32L162xE
  872.   *         STM32L151xDX, STM32L152xDX, STM32L162xDX
  873.   * @retval None
  874.   */
  875. #define __HAL_RTC_TAMPER_GET_FLAG(__HANDLE__, __FLAG__)               (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET)
  876.  
  877. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC)\
  878.   || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA)\
  879.   || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA)\
  880.   || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  881. /**
  882.   * @brief  Get the selected RTC shift operation's flag status.
  883.   * @param  __HANDLE__ specifies the RTC handle.
  884.   * @param  __FLAG__ specifies the RTC shift operation Flag is pending or not.
  885.   *         This parameter can be:
  886.   *            @arg RTC_FLAG_SHPF
  887.   * @retval None
  888.   */
  889. #define __HAL_RTC_SHIFT_GET_FLAG(__HANDLE__, __FLAG__)                (((((__HANDLE__)->Instance->ISR) & (__FLAG__)) != RESET)? SET : RESET)
  890. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  891.  
  892. /**
  893.   * @brief  Clear the RTC Time Stamp's pending flags.
  894.   * @param  __HANDLE__ specifies the RTC handle.
  895.   * @param  __FLAG__ specifies the RTC Alarm Flag sources to be enabled or disabled.
  896.   *         This parameter can be:
  897.   *            @arg RTC_FLAG_TSF
  898.   * @retval None
  899.   */
  900. #define __HAL_RTC_TIMESTAMP_CLEAR_FLAG(__HANDLE__, __FLAG__)          ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
  901.  
  902. /**
  903.   * @brief  Clear the RTC Tamper's pending flags.
  904.   * @param  __HANDLE__ specifies the RTC handle.
  905.   * @param  __FLAG__ specifies the RTC Tamper Flag sources to be enabled or disabled.
  906.   *         This parameter can be:
  907.   *            @arg RTC_FLAG_TAMP1F
  908.   *            @arg RTC_FLAG_TAMP2F  (*)
  909.   *            @arg RTC_FLAG_TAMP3F  (*)
  910.   * @note   (*) Available only on devices STM32L100xBA, STM32L151xBA, STM32L152xBA, STM32L100xC,
  911.   *         STM32L151xC, STM32L152xC, STM32L162xC, STM32L151xCA, STM32L151xD, STM32L152xCA,
  912.   *         STM32L152xD, STM32L162xCA, STM32L162xD, STM32L151xE, STM32L152xE, STM32L162xE
  913.   *         STM32L151xDX, STM32L152xDX, STM32L162xDX
  914.   * @retval None
  915.   */
  916. #define __HAL_RTC_TAMPER_CLEAR_FLAG(__HANDLE__, __FLAG__)      ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
  917.  
  918. /**
  919.   * @brief  Clear the RTC Wake Up timer's pending flags.
  920.   * @param  __HANDLE__ specifies the RTC handle.
  921.   * @param  __FLAG__ specifies the RTC WakeUpTimer Flag to clear.
  922.   *         This parameter can be:
  923.   *            @arg RTC_FLAG_WUTF
  924.   * @retval None
  925.   */
  926. #define __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ISR) = (~((__FLAG__) | RTC_ISR_INIT)|((__HANDLE__)->Instance->ISR & RTC_ISR_INIT))
  927.  
  928. /**
  929.   * @brief  Enable interrupt on the RTC WakeUp Timer associated Exti line.
  930.   * @retval None
  931.   */
  932. #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_IT()       (EXTI->IMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  933.  
  934. /**
  935.   * @brief  Disable interrupt on the RTC WakeUp Timer associated Exti line.
  936.   * @retval None
  937.   */
  938. #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_IT()      (EXTI->IMR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
  939.  
  940. /**
  941.   * @brief  Enable event on the RTC WakeUp Timer associated Exti line.
  942.   * @retval None.
  943.   */
  944. #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_EVENT()    (EXTI->EMR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  945.  
  946. /**
  947.   * @brief  Disable event on the RTC WakeUp Timer associated Exti line.
  948.   * @retval None.
  949.   */
  950. #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_EVENT()   (EXTI->EMR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
  951.  
  952. /**
  953.   * @brief  Enable falling edge trigger on the RTC WakeUp Timer associated Exti line.
  954.   * @retval None.
  955.   */
  956. #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  957.  
  958. /**
  959.   * @brief  Disable falling edge trigger on the RTC WakeUp Timer associated Exti line.
  960.   * @retval None.
  961.   */
  962. #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
  963.  
  964. /**
  965.   * @brief  Enable rising edge trigger on the RTC WakeUp Timer associated Exti line.
  966.   * @retval None.
  967.   */
  968. #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  969.  
  970. /**
  971.   * @brief  Disable rising edge trigger on the RTC WakeUp Timer associated Exti line.
  972.   * @retval None.
  973.   */
  974. #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~(RTC_EXTI_LINE_WAKEUPTIMER_EVENT))
  975.  
  976. /**
  977.   * @brief  Enable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.
  978.   * @retval None.
  979.   */
  980. #define __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_FALLING_EDGE() do { __HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_WAKEUPTIMER_EXTI_ENABLE_FALLING_EDGE(); } while(0);
  981.  
  982. /**
  983.   * @brief  Disable rising & falling edge trigger on the RTC WakeUp Timer associated Exti line.
  984.   * This parameter can be:
  985.   * @retval None.
  986.   */
  987. #define __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_FALLING_EDGE() do { __HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_WAKEUPTIMER_EXTI_DISABLE_FALLING_EDGE(); } while(0);
  988.  
  989. /**
  990.   * @brief Check whether the RTC WakeUp Timer associated Exti line interrupt flag is set or not.
  991.   * @retval Line Status.
  992.   */
  993. #define __HAL_RTC_WAKEUPTIMER_EXTI_GET_FLAG()              (EXTI->PR & RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  994.  
  995. /**
  996.   * @brief Clear the RTC WakeUp Timer associated Exti line flag.
  997.   * @retval None.
  998.   */
  999. #define __HAL_RTC_WAKEUPTIMER_EXTI_CLEAR_FLAG()            (EXTI->PR = RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  1000.  
  1001. /**
  1002.   * @brief Generate a Software interrupt on the RTC WakeUp Timer associated Exti line.
  1003.   * @retval None.
  1004.   */
  1005. #define __HAL_RTC_WAKEUPTIMER_EXTI_GENERATE_SWIT()         (EXTI->SWIER |= RTC_EXTI_LINE_WAKEUPTIMER_EVENT)
  1006.  
  1007. /**
  1008.   * @brief  Enable interrupt on the RTC Tamper and Timestamp associated Exti line.
  1009.   * @retval None
  1010.   */
  1011. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_IT()        (EXTI->IMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
  1012.  
  1013. /**
  1014.   * @brief  Disable interrupt on the RTC Tamper and Timestamp associated Exti line.
  1015.   * @retval None
  1016.   */
  1017. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_IT()       (EXTI->IMR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
  1018.  
  1019. /**
  1020.   * @brief  Enable event on the RTC Tamper and Timestamp associated Exti line.
  1021.   * @retval None.
  1022.   */
  1023. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_EVENT()    (EXTI->EMR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
  1024.  
  1025. /**
  1026.   * @brief  Disable event on the RTC Tamper and Timestamp associated Exti line.
  1027.   * @retval None.
  1028.   */
  1029. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_EVENT()   (EXTI->EMR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
  1030.  
  1031. /**
  1032.   * @brief  Enable falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
  1033.   * @retval None.
  1034.   */
  1035. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE()   (EXTI->FTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
  1036.  
  1037. /**
  1038.   * @brief  Disable falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
  1039.   * @retval None.
  1040.   */
  1041. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE()  (EXTI->FTSR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
  1042.  
  1043. /**
  1044.   * @brief  Enable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.
  1045.   * @retval None.
  1046.   */
  1047. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE()    (EXTI->RTSR |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
  1048.  
  1049. /**
  1050.   * @brief  Disable rising edge trigger on the RTC Tamper and Timestamp associated Exti line.
  1051.   * @retval None.
  1052.   */
  1053. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE()   (EXTI->RTSR &= ~(RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT))
  1054.  
  1055. /**
  1056.   * @brief  Enable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
  1057.   * @retval None.
  1058.   */
  1059. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_FALLING_EDGE() do { __HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_RISING_EDGE();__HAL_RTC_TAMPER_TIMESTAMP_EXTI_ENABLE_FALLING_EDGE(); } while(0);
  1060.  
  1061. /**
  1062.   * @brief  Disable rising & falling edge trigger on the RTC Tamper and Timestamp associated Exti line.
  1063.   * This parameter can be:
  1064.   * @retval None.
  1065.   */
  1066. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_FALLING_EDGE() do { __HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_RISING_EDGE();__HAL_RTC_TAMPER_TIMESTAMP_EXTI_DISABLE_FALLING_EDGE(); } while(0);
  1067.  
  1068. /**
  1069.   * @brief Check whether the RTC Tamper and Timestamp associated Exti line interrupt flag is set or not.
  1070.   * @retval Line Status.
  1071.   */
  1072. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GET_FLAG()         (EXTI->PR & RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
  1073.  
  1074. /**
  1075.   * @brief Clear the RTC Tamper and Timestamp associated Exti line flag.
  1076.   * @retval None.
  1077.   */
  1078. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_CLEAR_FLAG()       (EXTI->PR = RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
  1079.  
  1080. /**
  1081.   * @brief Generate a Software interrupt on the RTC Tamper and Timestamp associated Exti line
  1082.   * @retval None.
  1083.   */
  1084. #define __HAL_RTC_TAMPER_TIMESTAMP_EXTI_GENERATE_SWIT()    (EXTI->SWIER |= RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT)
  1085.  
  1086. /**
  1087.   * @}
  1088.   */
  1089.  
  1090. /* Exported functions --------------------------------------------------------*/
  1091. /** @defgroup RTCEx_Exported_Functions RTCEx Exported Functions
  1092.   * @{
  1093.   */
  1094.  
  1095. /* RTC TimeStamp and Tamper functions *****************************************/
  1096. /** @defgroup RTCEx_Exported_Functions_Group1 Extended RTC TimeStamp and Tamper functions
  1097.   * @{
  1098.   */
  1099. HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge);
  1100. HAL_StatusTypeDef HAL_RTCEx_SetTimeStamp_IT(RTC_HandleTypeDef *hrtc, uint32_t TimeStampEdge);
  1101. HAL_StatusTypeDef HAL_RTCEx_DeactivateTimeStamp(RTC_HandleTypeDef *hrtc);
  1102. HAL_StatusTypeDef HAL_RTCEx_GetTimeStamp(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTimeStamp, RTC_DateTypeDef *sTimeStampDate, uint32_t Format);
  1103. HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
  1104. HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper);
  1105. HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper);
  1106. void              HAL_RTCEx_TamperTimeStampIRQHandler(RTC_HandleTypeDef *hrtc);
  1107.  
  1108. void              HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc);
  1109. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  1110. void              HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc);
  1111. void              HAL_RTCEx_Tamper3EventCallback(RTC_HandleTypeDef *hrtc);
  1112. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  1113. void              HAL_RTCEx_TimeStampEventCallback(RTC_HandleTypeDef *hrtc);
  1114. HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  1115. HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  1116. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  1117. HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  1118. HAL_StatusTypeDef HAL_RTCEx_PollForTamper3Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  1119. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  1120. /**
  1121.   * @}
  1122.   */
  1123.  
  1124. /* RTC Wake-up functions ******************************************************/
  1125. /** @defgroup RTCEx_Exported_Functions_Group2 Extended RTC Wake-up functions
  1126.   * @{
  1127.   */
  1128. HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
  1129. HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock);
  1130. HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc);
  1131. uint32_t          HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc);
  1132. void              HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc);
  1133. void              HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc);
  1134. HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  1135. /**
  1136.   * @}
  1137.   */
  1138.  
  1139. /* Extended Control functions ************************************************/
  1140. /** @defgroup RTCEx_Exported_Functions_Group3 Extended Peripheral Control functions
  1141.   * @{
  1142.   */
  1143. void              HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data);
  1144. uint32_t          HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister);
  1145.  
  1146. HAL_StatusTypeDef HAL_RTCEx_SetCoarseCalib(RTC_HandleTypeDef *hrtc, uint32_t CalibSign, uint32_t Value);
  1147. HAL_StatusTypeDef HAL_RTCEx_DeactivateCoarseCalib(RTC_HandleTypeDef *hrtc);
  1148. #if defined(STM32L100xBA) || defined (STM32L151xBA) || defined (STM32L152xBA) || defined(STM32L100xC) || defined (STM32L151xC) || defined (STM32L152xC) || defined (STM32L162xC) || defined(STM32L151xCA) || defined (STM32L151xD) || defined (STM32L152xCA) || defined (STM32L152xD) || defined (STM32L162xCA) || defined (STM32L162xD) || defined(STM32L151xE) || defined(STM32L151xDX) || defined (STM32L152xE) || defined (STM32L152xDX) || defined (STM32L162xE) || defined (STM32L162xDX)
  1149. HAL_StatusTypeDef HAL_RTCEx_SetSmoothCalib(RTC_HandleTypeDef *hrtc, uint32_t SmoothCalibPeriod, uint32_t SmoothCalibPlusPulses, uint32_t SmoothCalibMinusPulsesValue);
  1150. HAL_StatusTypeDef HAL_RTCEx_SetSynchroShift(RTC_HandleTypeDef *hrtc, uint32_t ShiftAdd1S, uint32_t ShiftSubFS);
  1151. HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc, uint32_t CalibOutput);
  1152. #else
  1153. HAL_StatusTypeDef HAL_RTCEx_SetCalibrationOutPut(RTC_HandleTypeDef *hrtc);
  1154. #endif /* STM32L100xBA || STM32L151xBA || STM32L152xBA || STM32L100xC || STM32L151xC || STM32L152xC || STM32L162xC || STM32L151xCA || STM32L151xD || STM32L152xCA || STM32L152xD || STM32L162xCA || STM32L162xD || STM32L151xE || STM32L151xDX || STM32L152xE || STM32L152xDX || STM32L162xE || STM32L162xDX */
  1155. HAL_StatusTypeDef HAL_RTCEx_DeactivateCalibrationOutPut(RTC_HandleTypeDef *hrtc);
  1156. HAL_StatusTypeDef HAL_RTCEx_SetRefClock(RTC_HandleTypeDef *hrtc);
  1157. HAL_StatusTypeDef HAL_RTCEx_DeactivateRefClock(RTC_HandleTypeDef *hrtc);
  1158. HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc);
  1159. HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc);
  1160. /**
  1161.   * @}
  1162.   */
  1163.  
  1164. /* Extended RTC features functions *******************************************/
  1165. /** @defgroup RTCEx_Exported_Functions_Group4 Extended features functions
  1166.   * @{
  1167.   */
  1168. void              HAL_RTCEx_AlarmBEventCallback(RTC_HandleTypeDef *hrtc);
  1169. HAL_StatusTypeDef HAL_RTCEx_PollForAlarmBEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  1170. /**
  1171.   * @}
  1172.   */
  1173.  
  1174. /**
  1175.   * @}
  1176.   */
  1177.  
  1178. /* Private types -------------------------------------------------------------*/
  1179. /* Private variables ---------------------------------------------------------*/
  1180. /* Private constants ---------------------------------------------------------*/
  1181. /** @defgroup RTCEx_Private_Constants RTCEx Private Constants
  1182.   * @{
  1183.   */
  1184. #define RTC_EXTI_LINE_TAMPER_TIMESTAMP_EVENT  (0x00080000U)  /*!< External interrupt line 19 Connected to the RTC Tamper and Time Stamp events */
  1185. #define RTC_EXTI_LINE_WAKEUPTIMER_EVENT       (0x00100000U)  /*!< External interrupt line 20 Connected to the RTC Wakeup event */
  1186.  
  1187. /**
  1188.   * @}
  1189.   */
  1190.  
  1191. /* Private macros ------------------------------------------------------------*/
  1192. /** @defgroup RTCEx_Private_Macros RTCEx Private Macros
  1193.   * @{
  1194.   */
  1195.  
  1196. /**
  1197.   * @}
  1198.   */
  1199.  
  1200. /**
  1201.   * @}
  1202.   */
  1203.  
  1204. /**
  1205.   * @}
  1206.   */
  1207.  
  1208. /**
  1209.   * @}
  1210.   */
  1211.  
  1212. #ifdef __cplusplus
  1213. }
  1214. #endif
  1215.  
  1216. #endif /* __STM32L1xx_HAL_RTC_EX_H */
  1217.  
  1218. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  1219.