pro vyuku PSS v Jecne

Committer:
vladvana
Date:
Sun Sep 24 12:31:52 2017 +0000
Revision:
0:23d1f73bf130
podklady pro cviceni z PSS

Who changed what in which revision?

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