Subversion Repositories dashGPS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f1xx_hal_rtc.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of RTC HAL module.
  6.   ******************************************************************************
  7.   * @attention
  8.   *
  9.   * <h2><center>&copy; Copyright (c) 2016 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 __STM32F1xx_HAL_RTC_H
  22. #define __STM32F1xx_HAL_RTC_H
  23.  
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27.  
  28. /* Includes ------------------------------------------------------------------*/
  29. #include "stm32f1xx_hal_def.h"
  30.  
  31. /** @addtogroup STM32F1xx_HAL_Driver
  32.   * @{
  33.   */
  34.  
  35. /** @addtogroup RTC
  36.   * @{
  37.   */
  38.  
  39. /** @addtogroup RTC_Private_Macros
  40.   * @{
  41.   */
  42.  
  43. #define IS_RTC_ASYNCH_PREDIV(PREDIV)  (((PREDIV) <= 0xFFFFFU) || ((PREDIV) == RTC_AUTO_1_SECOND))
  44. #define IS_RTC_HOUR24(HOUR)           ((HOUR) <= 23U)
  45. #define IS_RTC_MINUTES(MINUTES)       ((MINUTES) <= 59U)
  46. #define IS_RTC_SECONDS(SECONDS)       ((SECONDS) <= 59U)
  47. #define IS_RTC_FORMAT(FORMAT)         (((FORMAT) == RTC_FORMAT_BIN) || ((FORMAT) == RTC_FORMAT_BCD))
  48. #define IS_RTC_YEAR(YEAR)             ((YEAR) <= 99U)
  49. #define IS_RTC_MONTH(MONTH)           (((MONTH) >= 1U) && ((MONTH) <= 12U))
  50. #define IS_RTC_DATE(DATE)             (((DATE) >= 1U) && ((DATE) <= 31U))
  51. #define IS_RTC_ALARM(ALARM)           ((ALARM) == RTC_ALARM_A)
  52. #define IS_RTC_CALIB_OUTPUT(__OUTPUT__) (((__OUTPUT__) == RTC_OUTPUTSOURCE_NONE) || \
  53.                                          ((__OUTPUT__) == RTC_OUTPUTSOURCE_CALIBCLOCK) || \
  54.                                          ((__OUTPUT__) == RTC_OUTPUTSOURCE_ALARM) || \
  55.                                          ((__OUTPUT__) == RTC_OUTPUTSOURCE_SECOND))
  56.  
  57.  
  58. /**
  59.   * @}
  60.   */
  61.  
  62. /** @addtogroup RTC_Private_Constants
  63.   * @{
  64.   */
  65. /** @defgroup RTC_Timeout_Value Default Timeout Value
  66.   * @{
  67.   */
  68. #define RTC_TIMEOUT_VALUE           1000U
  69. /**
  70.   * @}
  71.   */
  72.  
  73. /** @defgroup RTC_EXTI_Line_Event RTC EXTI Line event
  74.   * @{
  75.   */
  76. #define RTC_EXTI_LINE_ALARM_EVENT   ((uint32_t)EXTI_IMR_MR17)  /*!< External interrupt line 17 Connected to the RTC Alarm event */
  77. /**
  78.   * @}
  79.   */
  80.  
  81.  
  82. /**
  83.   * @}
  84.   */
  85.  
  86. /* Exported types ------------------------------------------------------------*/
  87. /** @defgroup RTC_Exported_Types RTC Exported Types
  88.   * @{
  89.   */
  90. /**
  91.   * @brief  RTC Time structure definition
  92.   */
  93. typedef struct
  94. {
  95.   uint8_t Hours;            /*!< Specifies the RTC Time Hour.
  96.                                  This parameter must be a number between Min_Data = 0 and Max_Data = 23 */
  97.  
  98.   uint8_t Minutes;          /*!< Specifies the RTC Time Minutes.
  99.                                  This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
  100.  
  101.   uint8_t Seconds;          /*!< Specifies the RTC Time Seconds.
  102.                                  This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
  103.  
  104. } RTC_TimeTypeDef;
  105.  
  106. /**
  107.   * @brief  RTC Alarm structure definition
  108.   */
  109. typedef struct
  110. {
  111.   RTC_TimeTypeDef AlarmTime;     /*!< Specifies the RTC Alarm Time members */
  112.  
  113.   uint32_t Alarm;                /*!< Specifies the alarm ID (only 1 alarm ID for STM32F1).
  114.                                       This parameter can be a value of @ref RTC_Alarms_Definitions */
  115. } RTC_AlarmTypeDef;
  116.  
  117. /**
  118.   * @brief  HAL State structures definition
  119.   */
  120. typedef enum
  121. {
  122.   HAL_RTC_STATE_RESET             = 0x00U,  /*!< RTC not yet initialized or disabled */
  123.   HAL_RTC_STATE_READY             = 0x01U,  /*!< RTC initialized and ready for use   */
  124.   HAL_RTC_STATE_BUSY              = 0x02U,  /*!< RTC process is ongoing              */
  125.   HAL_RTC_STATE_TIMEOUT           = 0x03U,  /*!< RTC timeout state                   */
  126.   HAL_RTC_STATE_ERROR             = 0x04U   /*!< RTC error state                     */
  127.  
  128. } HAL_RTCStateTypeDef;
  129.  
  130. /**
  131.   * @brief  RTC Configuration Structure definition
  132.   */
  133. typedef struct
  134. {
  135.   uint32_t AsynchPrediv;    /*!< Specifies the RTC Asynchronous Predivider value.
  136.                                  This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFFF  or RTC_AUTO_1_SECOND
  137.                                  If RTC_AUTO_1_SECOND is selected, AsynchPrediv will be set automatically to get 1sec timebase */
  138.  
  139.   uint32_t OutPut;          /*!< Specifies which signal will be routed to the RTC Tamper pin.
  140.                                  This parameter can be a value of @ref RTC_output_source_to_output_on_the_Tamper_pin */
  141.  
  142. } RTC_InitTypeDef;
  143.  
  144. /**
  145.   * @brief  RTC Date structure definition
  146.   */
  147. typedef struct
  148. {
  149.   uint8_t WeekDay;  /*!< Specifies the RTC Date WeekDay (not necessary for HAL_RTC_SetDate).
  150.                          This parameter can be a value of @ref RTC_WeekDay_Definitions */
  151.  
  152.   uint8_t Month;    /*!< Specifies the RTC Date Month (in BCD format).
  153.                          This parameter can be a value of @ref RTC_Month_Date_Definitions */
  154.  
  155.   uint8_t Date;     /*!< Specifies the RTC Date.
  156.                          This parameter must be a number between Min_Data = 1 and Max_Data = 31 */
  157.  
  158.   uint8_t Year;     /*!< Specifies the RTC Date Year.
  159.                          This parameter must be a number between Min_Data = 0 and Max_Data = 99 */
  160.  
  161. } RTC_DateTypeDef;
  162.  
  163. /**
  164.   * @brief  Time Handle Structure definition
  165.   */
  166. #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
  167. typedef struct __RTC_HandleTypeDef
  168. #else
  169. typedef struct
  170. #endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */
  171. {
  172.   RTC_TypeDef                 *Instance;  /*!< Register base address    */
  173.  
  174.   RTC_InitTypeDef             Init;       /*!< RTC required parameters  */
  175.  
  176.   RTC_DateTypeDef             DateToUpdate;       /*!< Current date set by user and updated automatically  */
  177.  
  178.   HAL_LockTypeDef             Lock;       /*!< RTC locking object       */
  179.  
  180.   __IO HAL_RTCStateTypeDef    State;      /*!< Time communication state */
  181.  
  182. #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
  183.   void (* AlarmAEventCallback)(struct __RTC_HandleTypeDef *hrtc);           /*!< RTC Alarm A Event callback         */
  184.  
  185.   void (* Tamper1EventCallback)(struct __RTC_HandleTypeDef *hrtc);          /*!< RTC Tamper 1 Event callback        */
  186.  
  187.   void (* MspInitCallback)(struct __RTC_HandleTypeDef *hrtc);               /*!< RTC Msp Init callback              */
  188.  
  189.   void (* MspDeInitCallback)(struct __RTC_HandleTypeDef *hrtc);             /*!< RTC Msp DeInit callback            */
  190.  
  191. #endif /* (USE_HAL_RTC_REGISTER_CALLBACKS) */
  192.  
  193. } RTC_HandleTypeDef;
  194.  
  195. #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
  196. /**
  197.   * @brief  HAL RTC Callback ID enumeration definition
  198.   */
  199. typedef enum
  200. {
  201.   HAL_RTC_ALARM_A_EVENT_CB_ID           = 0x00u,    /*!< RTC Alarm A Event Callback ID       */
  202.   HAL_RTC_TAMPER1_EVENT_CB_ID           = 0x04u,    /*!< RTC Tamper 1 Callback ID            */
  203.   HAL_RTC_MSPINIT_CB_ID                 = 0x0Eu,    /*!< RTC Msp Init callback ID            */
  204.   HAL_RTC_MSPDEINIT_CB_ID               = 0x0Fu     /*!< RTC Msp DeInit callback ID          */
  205. } HAL_RTC_CallbackIDTypeDef;
  206.  
  207. /**
  208.   * @brief  HAL RTC Callback pointer definition
  209.   */
  210. typedef  void (*pRTC_CallbackTypeDef)(RTC_HandleTypeDef *hrtc);  /*!< pointer to an RTC callback function */
  211. #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
  212.  
  213. /**
  214.   * @}
  215.   */
  216.  
  217. /* Exported constants --------------------------------------------------------*/
  218. /** @defgroup RTC_Exported_Constants RTC Exported Constants
  219.   * @{
  220.   */
  221.  
  222. /** @defgroup RTC_Automatic_Prediv_1_Second Automatic calculation of prediv for 1sec timebase
  223.   * @{
  224.   */
  225. #define RTC_AUTO_1_SECOND                      0xFFFFFFFFU
  226.  
  227. /**
  228.   * @}
  229.   */
  230.  
  231. /** @defgroup RTC_Input_parameter_format_definitions Input Parameter Format
  232.   * @{
  233.   */
  234. #define RTC_FORMAT_BIN                         0x000000000U
  235. #define RTC_FORMAT_BCD                         0x000000001U
  236.  
  237. /**
  238.   * @}
  239.   */
  240.  
  241. /** @defgroup RTC_Month_Date_Definitions Month Definitions
  242.   * @{
  243.   */
  244.  
  245. /* Coded in BCD format */
  246. #define RTC_MONTH_JANUARY              ((uint8_t)0x01)
  247. #define RTC_MONTH_FEBRUARY             ((uint8_t)0x02)
  248. #define RTC_MONTH_MARCH                ((uint8_t)0x03)
  249. #define RTC_MONTH_APRIL                ((uint8_t)0x04)
  250. #define RTC_MONTH_MAY                  ((uint8_t)0x05)
  251. #define RTC_MONTH_JUNE                 ((uint8_t)0x06)
  252. #define RTC_MONTH_JULY                 ((uint8_t)0x07)
  253. #define RTC_MONTH_AUGUST               ((uint8_t)0x08)
  254. #define RTC_MONTH_SEPTEMBER            ((uint8_t)0x09)
  255. #define RTC_MONTH_OCTOBER              ((uint8_t)0x10)
  256. #define RTC_MONTH_NOVEMBER             ((uint8_t)0x11)
  257. #define RTC_MONTH_DECEMBER             ((uint8_t)0x12)
  258.  
  259. /**
  260.   * @}
  261.   */
  262.  
  263. /** @defgroup RTC_WeekDay_Definitions WeekDay Definitions
  264.   * @{
  265.   */
  266. #define RTC_WEEKDAY_MONDAY             ((uint8_t)0x01)
  267. #define RTC_WEEKDAY_TUESDAY            ((uint8_t)0x02)
  268. #define RTC_WEEKDAY_WEDNESDAY          ((uint8_t)0x03)
  269. #define RTC_WEEKDAY_THURSDAY           ((uint8_t)0x04)
  270. #define RTC_WEEKDAY_FRIDAY             ((uint8_t)0x05)
  271. #define RTC_WEEKDAY_SATURDAY           ((uint8_t)0x06)
  272. #define RTC_WEEKDAY_SUNDAY             ((uint8_t)0x00)
  273.  
  274. /**
  275.   * @}
  276.   */
  277.  
  278. /** @defgroup RTC_Alarms_Definitions Alarms Definitions
  279.   * @{
  280.   */
  281. #define RTC_ALARM_A                        0U                                 /*!< Specify alarm ID (mainly for legacy purposes) */
  282.  
  283. /**
  284.   * @}
  285.   */
  286.  
  287.  
  288. /** @defgroup RTC_output_source_to_output_on_the_Tamper_pin Output source to output on the Tamper pin
  289.   * @{
  290.   */
  291.  
  292. #define RTC_OUTPUTSOURCE_NONE               0x00000000U                       /*!< No output on the TAMPER pin  */
  293. #define RTC_OUTPUTSOURCE_CALIBCLOCK         BKP_RTCCR_CCO                     /*!< RTC clock with a frequency divided by 64 on the TAMPER pin  */
  294. #define RTC_OUTPUTSOURCE_ALARM              BKP_RTCCR_ASOE                    /*!< Alarm pulse signal on the TAMPER pin  */
  295. #define RTC_OUTPUTSOURCE_SECOND             (BKP_RTCCR_ASOS | BKP_RTCCR_ASOE) /*!< Second pulse signal on the TAMPER pin  */
  296.  
  297. /**
  298.   * @}
  299.   */
  300.  
  301. /** @defgroup RTC_Interrupts_Definitions Interrupts Definitions
  302.   * @{
  303.   */
  304. #define RTC_IT_OW            RTC_CRH_OWIE       /*!< Overflow interrupt */
  305. #define RTC_IT_ALRA          RTC_CRH_ALRIE      /*!< Alarm interrupt */
  306. #define RTC_IT_SEC           RTC_CRH_SECIE      /*!< Second interrupt */
  307. #define RTC_IT_TAMP1         BKP_CSR_TPIE       /*!< TAMPER Pin interrupt enable */
  308. /**
  309.   * @}
  310.   */
  311.  
  312. /** @defgroup RTC_Flags_Definitions Flags Definitions
  313.   * @{
  314.   */
  315. #define RTC_FLAG_RTOFF       RTC_CRL_RTOFF      /*!< RTC Operation OFF flag */
  316. #define RTC_FLAG_RSF         RTC_CRL_RSF        /*!< Registers Synchronized flag */
  317. #define RTC_FLAG_OW          RTC_CRL_OWF        /*!< Overflow flag */
  318. #define RTC_FLAG_ALRAF       RTC_CRL_ALRF       /*!< Alarm flag */
  319. #define RTC_FLAG_SEC         RTC_CRL_SECF       /*!< Second flag */
  320. #define RTC_FLAG_TAMP1F      BKP_CSR_TEF        /*!< Tamper Interrupt Flag */
  321.  
  322. /**
  323.   * @}
  324.   */
  325.  
  326. /**
  327.   * @}
  328.   */
  329.  
  330. /* Exported macro ------------------------------------------------------------*/
  331. /** @defgroup RTC_Exported_macros RTC Exported Macros
  332.   * @{
  333.   */
  334.  
  335. /** @brief  Reset RTC handle state
  336.   * @param  __HANDLE__: RTC handle.
  337.   * @retval None
  338.   */
  339. #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
  340. #define __HAL_RTC_RESET_HANDLE_STATE(__HANDLE__) do{\
  341.                                                       (__HANDLE__)->State = HAL_RTC_STATE_RESET;\
  342.                                                       (__HANDLE__)->MspInitCallback = NULL;\
  343.                                                       (__HANDLE__)->MspDeInitCallback = NULL;\
  344.                                                      }while(0u)
  345. #else
  346. #define __HAL_RTC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_RTC_STATE_RESET)
  347. #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
  348.  
  349. /**
  350.   * @brief  Disable the write protection for RTC registers.
  351.   * @param  __HANDLE__: specifies the RTC handle.
  352.   * @retval None
  353.   */
  354. #define __HAL_RTC_WRITEPROTECTION_DISABLE(__HANDLE__)         SET_BIT((__HANDLE__)->Instance->CRL, RTC_CRL_CNF)
  355.  
  356. /**
  357.   * @brief  Enable the write protection for RTC registers.
  358.   * @param  __HANDLE__: specifies the RTC handle.
  359.   * @retval None
  360.   */
  361. #define __HAL_RTC_WRITEPROTECTION_ENABLE(__HANDLE__)          CLEAR_BIT((__HANDLE__)->Instance->CRL, RTC_CRL_CNF)
  362.  
  363. /**
  364.   * @brief  Enable the RTC Alarm interrupt.
  365.   * @param  __HANDLE__: specifies the RTC handle.
  366.   * @param  __INTERRUPT__: specifies the RTC Alarm interrupt sources to be enabled or disabled.
  367.   *          This parameter can be any combination of the following values:
  368.   *            @arg RTC_IT_ALRA: Alarm A interrupt
  369.   * @retval None
  370.   */
  371. #define __HAL_RTC_ALARM_ENABLE_IT(__HANDLE__, __INTERRUPT__)  SET_BIT((__HANDLE__)->Instance->CRH, (__INTERRUPT__))
  372.  
  373. /**
  374.   * @brief  Disable the RTC Alarm interrupt.
  375.   * @param  __HANDLE__: specifies the RTC handle.
  376.   * @param  __INTERRUPT__: specifies the RTC Alarm interrupt sources to be enabled or disabled.
  377.   *         This parameter can be any combination of the following values:
  378.   *            @arg RTC_IT_ALRA: Alarm A interrupt
  379.   * @retval None
  380.   */
  381. #define __HAL_RTC_ALARM_DISABLE_IT(__HANDLE__, __INTERRUPT__) CLEAR_BIT((__HANDLE__)->Instance->CRH, (__INTERRUPT__))
  382.  
  383. /**
  384.   * @brief  Check whether the specified RTC Alarm interrupt has been enabled or not.
  385.   * @param  __HANDLE__: specifies the RTC handle.
  386.   * @param  __INTERRUPT__: specifies the RTC Alarm interrupt sources to be checked
  387.   *         This parameter can be:
  388.   *            @arg RTC_IT_ALRA: Alarm A interrupt
  389.   * @retval None
  390.   */
  391. #define __HAL_RTC_ALARM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)     ((((((__HANDLE__)->Instance->CRH)& ((__INTERRUPT__)))) != RESET)? SET : RESET)
  392.  
  393. /**
  394.   * @brief  Get the selected RTC Alarm's flag status.
  395.   * @param  __HANDLE__: specifies the RTC handle.
  396.   * @param  __FLAG__: specifies the RTC Alarm Flag sources to be enabled or disabled.
  397.   *          This parameter can be:
  398.   *            @arg RTC_FLAG_ALRAF
  399.   * @retval None
  400.   */
  401. #define __HAL_RTC_ALARM_GET_FLAG(__HANDLE__, __FLAG__)        (((((__HANDLE__)->Instance->CRL) & (__FLAG__)) != RESET)? SET : RESET)
  402.  
  403. /**
  404.   * @brief  Check whether the specified RTC Alarm interrupt has occurred or not.
  405.   * @param  __HANDLE__: specifies the RTC handle.
  406.   * @param  __INTERRUPT__: specifies the RTC Alarm interrupt sources to check.
  407.   *         This parameter can be:
  408.   *            @arg RTC_IT_ALRA: Alarm A interrupt
  409.   * @retval None
  410.   */
  411. #define __HAL_RTC_ALARM_GET_IT(__HANDLE__, __INTERRUPT__)        (((((__HANDLE__)->Instance->CRL) & (__INTERRUPT__)) != RESET)? SET : RESET)
  412.  
  413. /**
  414.   * @brief  Clear the RTC Alarm's pending flags.
  415.   * @param  __HANDLE__: specifies the RTC handle.
  416.   * @param  __FLAG__: specifies the RTC Alarm Flag sources to be enabled or disabled.
  417.   *         This parameter can be:
  418.   *            @arg RTC_FLAG_ALRAF
  419.   * @retval None
  420.   */
  421. #define __HAL_RTC_ALARM_CLEAR_FLAG(__HANDLE__, __FLAG__)      ((__HANDLE__)->Instance->CRL) = ~(__FLAG__)
  422.  
  423. /**
  424.   * @brief Enable interrupt on ALARM Exti Line 17.
  425.   * @retval None.
  426.   */
  427. #define __HAL_RTC_ALARM_EXTI_ENABLE_IT()                  SET_BIT(EXTI->IMR, RTC_EXTI_LINE_ALARM_EVENT)
  428.  
  429. /**
  430.   * @brief Disable interrupt on ALARM Exti Line 17.
  431.   * @retval None.
  432.   */
  433. #define __HAL_RTC_ALARM_EXTI_DISABLE_IT()                 CLEAR_BIT(EXTI->IMR, RTC_EXTI_LINE_ALARM_EVENT)
  434.  
  435. /**
  436.   * @brief Enable event on ALARM Exti Line 17.
  437.   * @retval None.
  438.   */
  439. #define __HAL_RTC_ALARM_EXTI_ENABLE_EVENT()               SET_BIT(EXTI->EMR, RTC_EXTI_LINE_ALARM_EVENT)
  440.  
  441. /**
  442.   * @brief Disable event on ALARM Exti Line 17.
  443.   * @retval None.
  444.   */
  445. #define __HAL_RTC_ALARM_EXTI_DISABLE_EVENT()              CLEAR_BIT(EXTI->EMR, RTC_EXTI_LINE_ALARM_EVENT)
  446.  
  447.  
  448. /**
  449.   * @brief  ALARM EXTI line configuration: set falling edge trigger.
  450.   * @retval None.
  451.   */
  452. #define __HAL_RTC_ALARM_EXTI_ENABLE_FALLING_EDGE()        SET_BIT(EXTI->FTSR, RTC_EXTI_LINE_ALARM_EVENT)
  453.  
  454.  
  455. /**
  456.   * @brief Disable the ALARM Extended Interrupt Falling Trigger.
  457.   * @retval None.
  458.   */
  459. #define __HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE()       CLEAR_BIT(EXTI->FTSR, RTC_EXTI_LINE_ALARM_EVENT)
  460.  
  461.  
  462. /**
  463.   * @brief  ALARM EXTI line configuration: set rising edge trigger.
  464.   * @retval None.
  465.   */
  466. #define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE()         SET_BIT(EXTI->RTSR, RTC_EXTI_LINE_ALARM_EVENT)
  467.  
  468. /**
  469.   * @brief Disable the ALARM Extended Interrupt Rising Trigger.
  470.   * This parameter can be:
  471.   * @retval None.
  472.   */
  473. #define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE()        CLEAR_BIT(EXTI->RTSR, RTC_EXTI_LINE_ALARM_EVENT)
  474.  
  475. /**
  476.   * @brief  ALARM EXTI line configuration: set rising & falling edge trigger.
  477.   * @retval None.
  478.   */
  479. #define __HAL_RTC_ALARM_EXTI_ENABLE_RISING_FALLING_EDGE()      \
  480. do{                                                            \
  481.     __HAL_RTC_ALARM_EXTI_ENABLE_RISING_EDGE();                 \
  482.     __HAL_RTC_ALARM_EXTI_ENABLE_FALLING_EDGE();                \
  483.   } while(0U)
  484.  
  485. /**
  486.   * @brief Disable the ALARM Extended Interrupt Rising & Falling Trigger.
  487.   * This parameter can be:
  488.   * @retval None.
  489.   */
  490. #define __HAL_RTC_ALARM_EXTI_DISABLE_RISING_FALLING_EDGE()      \
  491. do{                                                             \
  492.     __HAL_RTC_ALARM_EXTI_DISABLE_RISING_EDGE();                 \
  493.     __HAL_RTC_ALARM_EXTI_DISABLE_FALLING_EDGE();                \
  494.   } while(0U)
  495.  
  496. /**
  497.   * @brief Check whether the specified ALARM EXTI interrupt flag is set or not.
  498.   * @retval EXTI ALARM Line Status.
  499.   */
  500. #define __HAL_RTC_ALARM_EXTI_GET_FLAG()                   (EXTI->PR & (RTC_EXTI_LINE_ALARM_EVENT))
  501.  
  502. /**
  503.   * @brief Clear the ALARM EXTI flag.
  504.   * @retval None.
  505.   */
  506. #define __HAL_RTC_ALARM_EXTI_CLEAR_FLAG()                 (EXTI->PR = (RTC_EXTI_LINE_ALARM_EVENT))
  507.  
  508. /**
  509.   * @brief Generate a Software interrupt on selected EXTI line.
  510.   * @retval None.
  511.   */
  512. #define __HAL_RTC_ALARM_EXTI_GENERATE_SWIT()              SET_BIT(EXTI->SWIER, RTC_EXTI_LINE_ALARM_EVENT)
  513. /**
  514.   * @}
  515.   */
  516.  
  517. /* Include RTC HAL Extension module */
  518. #include "stm32f1xx_hal_rtc_ex.h"
  519.  
  520. /* Exported functions --------------------------------------------------------*/
  521. /** @addtogroup RTC_Exported_Functions
  522.   * @{
  523.   */
  524.  
  525.  
  526. /* Initialization and de-initialization functions  ****************************/
  527. /** @addtogroup RTC_Exported_Functions_Group1
  528.   * @{
  529.   */
  530. HAL_StatusTypeDef HAL_RTC_Init(RTC_HandleTypeDef *hrtc);
  531. HAL_StatusTypeDef HAL_RTC_DeInit(RTC_HandleTypeDef *hrtc);
  532. void              HAL_RTC_MspInit(RTC_HandleTypeDef *hrtc);
  533. void              HAL_RTC_MspDeInit(RTC_HandleTypeDef *hrtc);
  534.  
  535. /* Callbacks Register/UnRegister functions  ***********************************/
  536. #if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
  537. HAL_StatusTypeDef HAL_RTC_RegisterCallback(RTC_HandleTypeDef *hrtc, HAL_RTC_CallbackIDTypeDef CallbackID, pRTC_CallbackTypeDef pCallback);
  538. HAL_StatusTypeDef HAL_RTC_UnRegisterCallback(RTC_HandleTypeDef *hrtc, HAL_RTC_CallbackIDTypeDef CallbackID);
  539. #endif /* USE_HAL_RTC_REGISTER_CALLBACKS */
  540. /**
  541.   * @}
  542.   */
  543.  
  544. /* RTC Time and Date functions ************************************************/
  545. /** @addtogroup RTC_Exported_Functions_Group2
  546.   * @{
  547.   */
  548. HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format);
  549. HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format);
  550. HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format);
  551. HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format);
  552. /**
  553.   * @}
  554.   */
  555.  
  556. /* RTC Alarm functions ********************************************************/
  557. /** @addtogroup RTC_Exported_Functions_Group3
  558.   * @{
  559.   */
  560. HAL_StatusTypeDef HAL_RTC_SetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format);
  561. HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format);
  562. HAL_StatusTypeDef HAL_RTC_DeactivateAlarm(RTC_HandleTypeDef *hrtc, uint32_t Alarm);
  563. HAL_StatusTypeDef HAL_RTC_GetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, uint32_t Format);
  564. void              HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc);
  565. HAL_StatusTypeDef HAL_RTC_PollForAlarmAEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout);
  566. void              HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc);
  567. /**
  568.   * @}
  569.   */
  570.  
  571. /* Peripheral State functions *************************************************/
  572. /** @addtogroup RTC_Exported_Functions_Group4
  573.   * @{
  574.   */
  575. HAL_RTCStateTypeDef HAL_RTC_GetState(RTC_HandleTypeDef *hrtc);
  576. /**
  577.   * @}
  578.   */
  579.  
  580. /* Peripheral Control functions ***********************************************/
  581. /** @addtogroup RTC_Exported_Functions_Group5
  582.   * @{
  583.   */
  584. HAL_StatusTypeDef   HAL_RTC_WaitForSynchro(RTC_HandleTypeDef *hrtc);
  585. /**
  586.   * @}
  587.   */
  588.  
  589. /**
  590.   * @}
  591.   */
  592.  
  593. /**
  594.   * @}
  595.   */
  596.  
  597. /**
  598.   * @}
  599.   */
  600.  
  601. #ifdef __cplusplus
  602. }
  603. #endif
  604.  
  605. #endif /* __STM32F1xx_HAL_RTC_H */
  606.  
  607. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  608.