1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000 |
- /**
- ******************************************************************************
- * @file stm32f1xx_ll_rtc.h
- * @author MCD Application Team
- * @brief Header file of RTC LL module.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2016 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
- /* Define to prevent recursive inclusion -------------------------------------*/
- #ifndef __STM32F1xx_LL_RTC_H
- #define __STM32F1xx_LL_RTC_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Includes ------------------------------------------------------------------*/
- #include "stm32f1xx.h"
- /** @addtogroup STM32F1xx_LL_Driver
- * @{
- */
- #if defined(RTC)
- /** @defgroup RTC_LL RTC
- * @{
- */
- /* Private types -------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- /* Private constants ---------------------------------------------------------*/
- /* Private macros ------------------------------------------------------------*/
- #if defined(USE_FULL_LL_DRIVER)
- /** @defgroup RTC_LL_Private_Macros RTC Private Macros
- * @{
- */
- /**
- * @}
- */
- #endif /*USE_FULL_LL_DRIVER*/
- /* Exported types ------------------------------------------------------------*/
- #if defined(USE_FULL_LL_DRIVER)
- /** @defgroup RTC_LL_ES_INIT RTC Exported Init structure
- * @{
- */
- /**
- * @brief RTC Init structures definition
- */
- typedef struct
- {
- uint32_t AsynchPrescaler; /*!< Specifies the RTC Asynchronous Predivider value.
- This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFFF
- This feature can be modified afterwards using unitary function
- @ref LL_RTC_SetAsynchPrescaler(). */
- uint32_t OutPutSource; /*!< Specifies which signal will be routed to the RTC Tamper pin.
- This parameter can be a value of @ref LL_RTC_Output_Source
- This feature can be modified afterwards using unitary function
- @ref LL_RTC_SetOutputSource(). */
- } LL_RTC_InitTypeDef;
- /**
- * @brief RTC Time structure definition
- */
- typedef struct
- {
- uint8_t Hours; /*!< Specifies the RTC Time Hours.
- This parameter must be a number between Min_Data = 0 and Max_Data = 23 */
- uint8_t Minutes; /*!< Specifies the RTC Time Minutes.
- This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
- uint8_t Seconds; /*!< Specifies the RTC Time Seconds.
- This parameter must be a number between Min_Data = 0 and Max_Data = 59 */
- } LL_RTC_TimeTypeDef;
- /**
- * @brief RTC Alarm structure definition
- */
- typedef struct
- {
- LL_RTC_TimeTypeDef AlarmTime; /*!< Specifies the RTC Alarm Time members. */
- } LL_RTC_AlarmTypeDef;
- /**
- * @}
- */
- #endif /* USE_FULL_LL_DRIVER */
- /* Exported constants --------------------------------------------------------*/
- /** @defgroup RTC_LL_Exported_Constants RTC Exported Constants
- * @{
- */
- #if defined(USE_FULL_LL_DRIVER)
- /** @defgroup RTC_LL_EC_FORMAT FORMAT
- * @{
- */
- #define LL_RTC_FORMAT_BIN (0x000000000U) /*!< Binary data format */
- #define LL_RTC_FORMAT_BCD (0x000000001U) /*!< BCD data format */
- /**
- * @}
- */
- #endif /* USE_FULL_LL_DRIVER */
- /** @defgroup RTC_LL_EC_BKP BACKUP
- * @{
- */
- #if RTC_BKP_NUMBER > 0
- #define LL_RTC_BKP_DR1 (0x00000001U)
- #define LL_RTC_BKP_DR2 (0x00000002U)
- #define LL_RTC_BKP_DR3 (0x00000003U)
- #define LL_RTC_BKP_DR4 (0x00000004U)
- #define LL_RTC_BKP_DR5 (0x00000005U)
- #define LL_RTC_BKP_DR6 (0x00000006U)
- #define LL_RTC_BKP_DR7 (0x00000007U)
- #define LL_RTC_BKP_DR8 (0x00000008U)
- #define LL_RTC_BKP_DR9 (0x00000009U)
- #define LL_RTC_BKP_DR10 (0x0000000AU)
- #endif /* RTC_BKP_NUMBER > 0 */
- #if RTC_BKP_NUMBER > 10
- #define LL_RTC_BKP_DR11 (0x00000010U)
- #define LL_RTC_BKP_DR12 (0x00000011U)
- #define LL_RTC_BKP_DR13 (0x00000012U)
- #define LL_RTC_BKP_DR14 (0x00000013U)
- #define LL_RTC_BKP_DR15 (0x00000014U)
- #define LL_RTC_BKP_DR16 (0x00000015U)
- #define LL_RTC_BKP_DR17 (0x00000016U)
- #define LL_RTC_BKP_DR18 (0x00000017U)
- #define LL_RTC_BKP_DR19 (0x00000018U)
- #define LL_RTC_BKP_DR20 (0x00000019U)
- #define LL_RTC_BKP_DR21 (0x0000001AU)
- #define LL_RTC_BKP_DR22 (0x0000001BU)
- #define LL_RTC_BKP_DR23 (0x0000001CU)
- #define LL_RTC_BKP_DR24 (0x0000001DU)
- #define LL_RTC_BKP_DR25 (0x0000001EU)
- #define LL_RTC_BKP_DR26 (0x0000001FU)
- #define LL_RTC_BKP_DR27 (0x00000020U)
- #define LL_RTC_BKP_DR28 (0x00000021U)
- #define LL_RTC_BKP_DR29 (0x00000022U)
- #define LL_RTC_BKP_DR30 (0x00000023U)
- #define LL_RTC_BKP_DR31 (0x00000024U)
- #define LL_RTC_BKP_DR32 (0x00000025U)
- #define LL_RTC_BKP_DR33 (0x00000026U)
- #define LL_RTC_BKP_DR34 (0x00000027U)
- #define LL_RTC_BKP_DR35 (0x00000028U)
- #define LL_RTC_BKP_DR36 (0x00000029U)
- #define LL_RTC_BKP_DR37 (0x0000002AU)
- #define LL_RTC_BKP_DR38 (0x0000002BU)
- #define LL_RTC_BKP_DR39 (0x0000002CU)
- #define LL_RTC_BKP_DR40 (0x0000002DU)
- #define LL_RTC_BKP_DR41 (0x0000002EU)
- #define LL_RTC_BKP_DR42 (0x0000002FU)
- #endif /* RTC_BKP_NUMBER > 10 */
- /**
- * @}
- */
- /** @defgroup RTC_LL_EC_TAMPLEVEL Tamper Active Level
- * @{
- */
- #define LL_RTC_TAMPER_ACTIVELEVEL_LOW BKP_CR_TPAL /*!< A high level on the TAMPER pin resets all data backup registers (if TPE bit is set) */
- #define LL_RTC_TAMPER_ACTIVELEVEL_HIGH (0x00000000U) /*!< A low level on the TAMPER pin resets all data backup registers (if TPE bit is set) */
- /**
- * @}
- */
- /** @defgroup LL_RTC_Output_Source Clock Source to output on the Tamper Pin
- * @{
- */
- #define LL_RTC_CALIB_OUTPUT_NONE (0x00000000U) /*!< Calibration output disabled */
- #define LL_RTC_CALIB_OUTPUT_RTCCLOCK BKP_RTCCR_CCO /*!< Calibration output is RTC Clock with a frequency divided by 64 on the TAMPER Pin */
- #define LL_RTC_CALIB_OUTPUT_ALARM BKP_RTCCR_ASOE /*!< Calibration output is Alarm pulse signal on the TAMPER pin */
- #define LL_RTC_CALIB_OUTPUT_SECOND (BKP_RTCCR_ASOS | BKP_RTCCR_ASOE) /*!< Calibration output is Second pulse signal on the TAMPER pin*/
- /**
- * @}
- */
- /**
- * @}
- */
- /* Exported macro ------------------------------------------------------------*/
- /** @defgroup RTC_LL_Exported_Macros RTC Exported Macros
- * @{
- */
- /** @defgroup RTC_LL_EM_WRITE_READ Common Write and read registers Macros
- * @{
- */
- /**
- * @brief Write a value in RTC register
- * @param __INSTANCE__ RTC Instance
- * @param __REG__ Register to be written
- * @param __VALUE__ Value to be written in the register
- * @retval None
- */
- #define LL_RTC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
- /**
- * @brief Read a value in RTC register
- * @param __INSTANCE__ RTC Instance
- * @param __REG__ Register to be read
- * @retval Register value
- */
- #define LL_RTC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
- /**
- * @}
- */
- /** @defgroup RTC_LL_EM_Convert Convert helper Macros
- * @{
- */
- /**
- * @brief Helper macro to convert a value from 2 digit decimal format to BCD format
- * @param __VALUE__ Byte to be converted
- * @retval Converted byte
- */
- #define __LL_RTC_CONVERT_BIN2BCD(__VALUE__) (uint8_t)((((__VALUE__) / 10U) << 4U) | ((__VALUE__) % 10U))
- /**
- * @brief Helper macro to convert a value from BCD format to 2 digit decimal format
- * @param __VALUE__ BCD value to be converted
- * @retval Converted byte
- */
- #define __LL_RTC_CONVERT_BCD2BIN(__VALUE__) (uint8_t)(((uint8_t)((__VALUE__) & (uint8_t)0xF0U) >> (uint8_t)0x4U) * 10U + ((__VALUE__) & (uint8_t)0x0FU))
- /**
- * @}
- */
- /**
- * @}
- */
- /* Exported functions --------------------------------------------------------*/
- /** @defgroup RTC_LL_Exported_Functions RTC Exported Functions
- * @{
- */
- /** @defgroup RTC_LL_EF_Configuration Configuration
- * @{
- */
- /**
- * @brief Set Asynchronous prescaler factor
- * @rmtoll PRLH PRL LL_RTC_SetAsynchPrescaler\n
- * @rmtoll PRLL PRL LL_RTC_SetAsynchPrescaler\n
- * @param RTCx RTC Instance
- * @param AsynchPrescaler Value between Min_Data = 0 and Max_Data = 0xFFFFF
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_SetAsynchPrescaler(RTC_TypeDef *RTCx, uint32_t AsynchPrescaler)
- {
- MODIFY_REG(RTCx->PRLH, RTC_PRLH_PRL, (AsynchPrescaler >> 16));
- MODIFY_REG(RTCx->PRLL, RTC_PRLL_PRL, (AsynchPrescaler & RTC_PRLL_PRL));
- }
- /**
- * @brief Get Asynchronous prescaler factor
- * @rmtoll DIVH DIV LL_RTC_GetDivider\n
- * @rmtoll DIVL DIV LL_RTC_GetDivider\n
- * @param RTCx RTC Instance
- * @retval Value between Min_Data = 0 and Max_Data = 0xFFFFF
- */
- __STATIC_INLINE uint32_t LL_RTC_GetDivider(RTC_TypeDef *RTCx)
- {
- register uint16_t Highprescaler = 0, Lowprescaler = 0;
- Highprescaler = READ_REG(RTCx->DIVH & RTC_DIVH_RTC_DIV);
- Lowprescaler = READ_REG(RTCx->DIVL & RTC_DIVL_RTC_DIV);
- return (((uint32_t) Highprescaler << 16U) | Lowprescaler);
- }
- /**
- * @brief Set Output Source
- * @rmtoll RTCCR CCO LL_RTC_SetOutputSource
- * @rmtoll RTCCR ASOE LL_RTC_SetOutputSource
- * @rmtoll RTCCR ASOS LL_RTC_SetOutputSource
- * @param BKPx BKP Instance
- * @param OutputSource This parameter can be one of the following values:
- * @arg @ref LL_RTC_CALIB_OUTPUT_NONE
- * @arg @ref LL_RTC_CALIB_OUTPUT_RTCCLOCK
- * @arg @ref LL_RTC_CALIB_OUTPUT_ALARM
- * @arg @ref LL_RTC_CALIB_OUTPUT_SECOND
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_SetOutputSource(BKP_TypeDef *BKPx, uint32_t OutputSource)
- {
- MODIFY_REG(BKPx->RTCCR, (BKP_RTCCR_CCO | BKP_RTCCR_ASOE | BKP_RTCCR_ASOS), OutputSource);
- }
- /**
- * @brief Get Output Source
- * @rmtoll RTCCR CCO LL_RTC_GetOutPutSource
- * @rmtoll RTCCR ASOE LL_RTC_GetOutPutSource
- * @rmtoll RTCCR ASOS LL_RTC_GetOutPutSource
- * @param BKPx BKP Instance
- * @retval Returned value can be one of the following values:
- * @arg @ref LL_RTC_CALIB_OUTPUT_NONE
- * @arg @ref LL_RTC_CALIB_OUTPUT_RTCCLOCK
- * @arg @ref LL_RTC_CALIB_OUTPUT_ALARM
- * @arg @ref LL_RTC_CALIB_OUTPUT_SECOND
- */
- __STATIC_INLINE uint32_t LL_RTC_GetOutPutSource(BKP_TypeDef *BKPx)
- {
- return (uint32_t)(READ_BIT(BKPx->RTCCR, (BKP_RTCCR_CCO | BKP_RTCCR_ASOE | BKP_RTCCR_ASOS)));
- }
- /**
- * @brief Enable the write protection for RTC registers.
- * @rmtoll CRL CNF LL_RTC_EnableWriteProtection
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_EnableWriteProtection(RTC_TypeDef *RTCx)
- {
- CLEAR_BIT(RTCx->CRL, RTC_CRL_CNF);
- }
- /**
- * @brief Disable the write protection for RTC registers.
- * @rmtoll CRL RTC_CRL_CNF LL_RTC_DisableWriteProtection
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_DisableWriteProtection(RTC_TypeDef *RTCx)
- {
- SET_BIT(RTCx->CRL, RTC_CRL_CNF);
- }
- /**
- * @}
- */
- /** @defgroup RTC_LL_EF_Time Time
- * @{
- */
- /**
- * @brief Set time counter in BCD format
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @note It can be written in initialization mode only (@ref LL_RTC_EnterInitMode function)
- * @rmtoll CNTH CNT LL_RTC_TIME_Set\n
- * CNTL CNT LL_RTC_TIME_Set\n
- * @param RTCx RTC Instance
- * @param TimeCounter Value between Min_Data=0x00 and Max_Data=0xFFFFF
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_TIME_Set(RTC_TypeDef *RTCx, uint32_t TimeCounter)
- {
- /* Set RTC COUNTER MSB word */
- WRITE_REG(RTCx->CNTH, (TimeCounter >> 16U));
- /* Set RTC COUNTER LSB word */
- WRITE_REG(RTCx->CNTL, (TimeCounter & RTC_CNTL_RTC_CNT));
- }
- /**
- * @brief Get time counter in BCD format
- * @rmtoll CNTH CNT LL_RTC_TIME_Get\n
- * CNTL CNT LL_RTC_TIME_Get\n
- * @param RTCx RTC Instance
- * @retval Value between Min_Data = 0 and Max_Data = 0xFFFFF
- */
- __STATIC_INLINE uint32_t LL_RTC_TIME_Get(RTC_TypeDef *RTCx)
- {
- register uint16_t high = 0, low = 0;
- high = READ_REG(RTCx->CNTH & RTC_CNTH_RTC_CNT);
- low = READ_REG(RTCx->CNTL & RTC_CNTL_RTC_CNT);
- return ((uint32_t)(((uint32_t) high << 16U) | low));
- }
- /**
- * @}
- */
- /** @defgroup RTC_LL_EF_ALARM ALARM
- * @{
- */
- /**
- * @brief Set Alarm Counter
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @rmtoll ALRH ALR LL_RTC_ALARM_Set\n
- * @rmtoll ALRL ALR LL_RTC_ALARM_Set\n
- * @param RTCx RTC Instance
- * @param AlarmCounter Value between Min_Data=0x00 and Max_Data=0xFFFFF
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_ALARM_Set(RTC_TypeDef *RTCx, uint32_t AlarmCounter)
- {
- /* Set RTC COUNTER MSB word */
- WRITE_REG(RTCx->ALRH, (AlarmCounter >> 16));
- /* Set RTC COUNTER LSB word */
- WRITE_REG(RTCx->ALRL, (AlarmCounter & RTC_ALRL_RTC_ALR));
- }
- /**
- * @brief Get Alarm Counter
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @rmtoll ALRH ALR LL_RTC_ALARM_Get\n
- * @rmtoll ALRL ALR LL_RTC_ALARM_Get\n
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE uint32_t LL_RTC_ALARM_Get(RTC_TypeDef *RTCx)
- {
- register uint16_t high = 0, low = 0;
- high = READ_REG(RTCx->ALRH & RTC_ALRH_RTC_ALR);
- low = READ_REG(RTCx->ALRL & RTC_ALRL_RTC_ALR);
- return (((uint32_t) high << 16U) | low);
- }
- /**
- * @}
- */
- /** @defgroup RTC_LL_EF_Tamper Tamper
- * @{
- */
- /**
- * @brief Enable RTC_TAMPx input detection
- * @rmtoll CR TPE LL_RTC_TAMPER_Enable\n
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_TAMPER_Enable(BKP_TypeDef *BKPx)
- {
- SET_BIT(BKPx->CR, BKP_CR_TPE);
- }
- /**
- * @brief Disable RTC_TAMPx Tamper
- * @rmtoll CR TPE LL_RTC_TAMPER_Disable\n
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_TAMPER_Disable(BKP_TypeDef *BKPx)
- {
- CLEAR_BIT(BKP->CR, BKP_CR_TPE);
- }
- /**
- * @brief Enable Active level for Tamper input
- * @rmtoll CR TPAL LL_RTC_TAMPER_SetActiveLevel\n
- * @param BKPx BKP Instance
- * @param Tamper This parameter can be a combination of the following values:
- * @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_LOW
- * @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_HIGH
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_TAMPER_SetActiveLevel(BKP_TypeDef *BKPx, uint32_t Tamper)
- {
- MODIFY_REG(BKPx->CR, BKP_CR_TPAL, Tamper);
- }
- /**
- * @brief Disable Active level for Tamper input
- * @rmtoll CR TPAL LL_RTC_TAMPER_SetActiveLevel\n
- * @retval None
- */
- __STATIC_INLINE uint32_t LL_RTC_TAMPER_GetActiveLevel(BKP_TypeDef *BKPx)
- {
- return (uint32_t)(READ_BIT(BKPx->CR, BKP_CR_TPAL));
- }
- /**
- * @}
- */
- /** @defgroup RTC_LL_EF_Backup_Registers Backup_Registers
- * @{
- */
- /**
- * @brief Writes a data in a specified RTC Backup data register.
- * @rmtoll BKPDR DR LL_RTC_BKP_SetRegister
- * @param BKPx BKP Instance
- * @param BackupRegister This parameter can be one of the following values:
- * @arg @ref LL_RTC_BKP_DR1
- * @arg @ref LL_RTC_BKP_DR2
- * @arg @ref LL_RTC_BKP_DR3
- * @arg @ref LL_RTC_BKP_DR4
- * @arg @ref LL_RTC_BKP_DR5
- * @arg @ref LL_RTC_BKP_DR6
- * @arg @ref LL_RTC_BKP_DR7
- * @arg @ref LL_RTC_BKP_DR8
- * @arg @ref LL_RTC_BKP_DR9
- * @arg @ref LL_RTC_BKP_DR10
- * @arg @ref LL_RTC_BKP_DR11 (*)
- * @arg @ref LL_RTC_BKP_DR12 (*)
- * @arg @ref LL_RTC_BKP_DR13 (*)
- * @arg @ref LL_RTC_BKP_DR14 (*)
- * @arg @ref LL_RTC_BKP_DR15 (*)
- * @arg @ref LL_RTC_BKP_DR16 (*)
- * @arg @ref LL_RTC_BKP_DR17 (*)
- * @arg @ref LL_RTC_BKP_DR18 (*)
- * @arg @ref LL_RTC_BKP_DR19 (*)
- * @arg @ref LL_RTC_BKP_DR20 (*)
- * @arg @ref LL_RTC_BKP_DR21 (*)
- * @arg @ref LL_RTC_BKP_DR22 (*)
- * @arg @ref LL_RTC_BKP_DR23 (*)
- * @arg @ref LL_RTC_BKP_DR24 (*)
- * @arg @ref LL_RTC_BKP_DR25 (*)
- * @arg @ref LL_RTC_BKP_DR26 (*)
- * @arg @ref LL_RTC_BKP_DR27 (*)
- * @arg @ref LL_RTC_BKP_DR28 (*)
- * @arg @ref LL_RTC_BKP_DR29 (*)
- * @arg @ref LL_RTC_BKP_DR30 (*)
- * @arg @ref LL_RTC_BKP_DR31 (*)
- * @arg @ref LL_RTC_BKP_DR32 (*)
- * @arg @ref LL_RTC_BKP_DR33 (*)
- * @arg @ref LL_RTC_BKP_DR34 (*)
- * @arg @ref LL_RTC_BKP_DR35 (*)
- * @arg @ref LL_RTC_BKP_DR36 (*)
- * @arg @ref LL_RTC_BKP_DR37 (*)
- * @arg @ref LL_RTC_BKP_DR38 (*)
- * @arg @ref LL_RTC_BKP_DR39 (*)
- * @arg @ref LL_RTC_BKP_DR40 (*)
- * @arg @ref LL_RTC_BKP_DR41 (*)
- * @arg @ref LL_RTC_BKP_DR42 (*)
- * (*) value not defined in all devices.
- * @param Data Value between Min_Data=0x00 and Max_Data=0xFFFFFFFF
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_BKP_SetRegister(BKP_TypeDef *BKPx, uint32_t BackupRegister, uint32_t Data)
- {
- register uint32_t tmp = 0U;
- tmp = (uint32_t)BKP_BASE;
- tmp += (BackupRegister * 4U);
- /* Write the specified register */
- *(__IO uint32_t *)tmp = (uint32_t)Data;
- }
- /**
- * @brief Reads data from the specified RTC Backup data Register.
- * @rmtoll BKPDR DR LL_RTC_BKP_GetRegister
- * @param BKPx BKP Instance
- * @param BackupRegister This parameter can be one of the following values:
- * @arg @ref LL_RTC_BKP_DR1
- * @arg @ref LL_RTC_BKP_DR2
- * @arg @ref LL_RTC_BKP_DR3
- * @arg @ref LL_RTC_BKP_DR4
- * @arg @ref LL_RTC_BKP_DR5
- * @arg @ref LL_RTC_BKP_DR6
- * @arg @ref LL_RTC_BKP_DR7
- * @arg @ref LL_RTC_BKP_DR8
- * @arg @ref LL_RTC_BKP_DR9
- * @arg @ref LL_RTC_BKP_DR10
- * @arg @ref LL_RTC_BKP_DR11 (*)
- * @arg @ref LL_RTC_BKP_DR12 (*)
- * @arg @ref LL_RTC_BKP_DR13 (*)
- * @arg @ref LL_RTC_BKP_DR14 (*)
- * @arg @ref LL_RTC_BKP_DR15 (*)
- * @arg @ref LL_RTC_BKP_DR16 (*)
- * @arg @ref LL_RTC_BKP_DR17 (*)
- * @arg @ref LL_RTC_BKP_DR18 (*)
- * @arg @ref LL_RTC_BKP_DR19 (*)
- * @arg @ref LL_RTC_BKP_DR20 (*)
- * @arg @ref LL_RTC_BKP_DR21 (*)
- * @arg @ref LL_RTC_BKP_DR22 (*)
- * @arg @ref LL_RTC_BKP_DR23 (*)
- * @arg @ref LL_RTC_BKP_DR24 (*)
- * @arg @ref LL_RTC_BKP_DR25 (*)
- * @arg @ref LL_RTC_BKP_DR26 (*)
- * @arg @ref LL_RTC_BKP_DR27 (*)
- * @arg @ref LL_RTC_BKP_DR28 (*)
- * @arg @ref LL_RTC_BKP_DR29 (*)
- * @arg @ref LL_RTC_BKP_DR30 (*)
- * @arg @ref LL_RTC_BKP_DR31 (*)
- * @arg @ref LL_RTC_BKP_DR32 (*)
- * @arg @ref LL_RTC_BKP_DR33 (*)
- * @arg @ref LL_RTC_BKP_DR34 (*)
- * @arg @ref LL_RTC_BKP_DR35 (*)
- * @arg @ref LL_RTC_BKP_DR36 (*)
- * @arg @ref LL_RTC_BKP_DR37 (*)
- * @arg @ref LL_RTC_BKP_DR38 (*)
- * @arg @ref LL_RTC_BKP_DR39 (*)
- * @arg @ref LL_RTC_BKP_DR40 (*)
- * @arg @ref LL_RTC_BKP_DR41 (*)
- * @arg @ref LL_RTC_BKP_DR42 (*)
- * @retval Value between Min_Data=0x00 and Max_Data=0xFFFFFFFF
- */
- __STATIC_INLINE uint32_t LL_RTC_BKP_GetRegister(BKP_TypeDef *BKPx, uint32_t BackupRegister)
- {
- register uint32_t tmp = 0U;
- tmp = (uint32_t)BKP_BASE;
- tmp += (BackupRegister * 4U);
- /* Read the specified register */
- return ((*(__IO uint32_t *)tmp) & BKP_DR1_D);
- }
- /**
- * @}
- */
- /** @defgroup RTC_LL_EF_Calibration Calibration
- * @{
- */
- /**
- * @brief Set the coarse digital calibration
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @note It can be written in initialization mode only (@ref LL_RTC_EnterInitMode function)
- * @rmtoll RTCCR CAL LL_RTC_CAL_SetCoarseDigital\n
- * @param BKPx RTC Instance
- * @param Value value of coarse calibration expressed in ppm (coded on 5 bits)
- * @note This Calibration value should be between 0 and 121 when using positive sign with a 4-ppm step.
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_CAL_SetCoarseDigital(BKP_TypeDef *BKPx, uint32_t Value)
- {
- MODIFY_REG(BKPx->RTCCR, BKP_RTCCR_CAL, Value);
- }
- /**
- * @brief Get the coarse digital calibration value
- * @rmtoll RTCCR CAL LL_RTC_CAL_SetCoarseDigital\n
- * @param BKPx BKP Instance
- * @retval value of coarse calibration expressed in ppm (coded on 5 bits)
- */
- __STATIC_INLINE uint32_t LL_RTC_CAL_GetCoarseDigital(BKP_TypeDef *BKPx)
- {
- return (uint32_t)(READ_BIT(BKPx->RTCCR, BKP_RTCCR_CAL));
- }
- /**
- * @}
- */
- /** @defgroup RTC_LL_EF_FLAG_Management FLAG_Management
- * @{
- */
- /**
- * @brief Get RTC_TAMPI Interruption detection flag
- * @rmtoll CSR TIF LL_RTC_IsActiveFlag_TAMPI
- * @param BKPx BKP Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMPI(BKP_TypeDef *BKPx)
- {
- return (READ_BIT(BKPx->CSR, BKP_CSR_TIF) == (BKP_CSR_TIF));
- }
- /**
- * @brief Clear RTC_TAMP Interruption detection flag
- * @rmtoll CSR CTI LL_RTC_ClearFlag_TAMPI
- * @param BKPx BKP Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_ClearFlag_TAMPI(BKP_TypeDef *BKPx)
- {
- SET_BIT(BKPx->CSR, BKP_CSR_CTI);
- }
- /**
- * @brief Get RTC_TAMPE Event detection flag
- * @rmtoll CSR TEF LL_RTC_IsActiveFlag_TAMPE
- * @param BKPx BKP Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMPE(BKP_TypeDef *BKPx)
- {
- return (READ_BIT(BKPx->CSR, BKP_CSR_TEF) == (BKP_CSR_TEF));
- }
- /**
- * @brief Clear RTC_TAMPE Even detection flag
- * @rmtoll CSR CTE LL_RTC_ClearFlag_TAMPE
- * @param BKPx BKP Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_ClearFlag_TAMPE(BKP_TypeDef *BKPx)
- {
- SET_BIT(BKPx->CSR, BKP_CSR_CTE);
- }
- /**
- * @brief Get Alarm flag
- * @rmtoll CRL ALRF LL_RTC_IsActiveFlag_ALR
- * @param RTCx RTC Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALR(RTC_TypeDef *RTCx)
- {
- return (READ_BIT(RTCx->CRL, RTC_CRL_ALRF) == (RTC_CRL_ALRF));
- }
- /**
- * @brief Clear Alarm flag
- * @rmtoll CRL ALRF LL_RTC_ClearFlag_ALR
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_ClearFlag_ALR(RTC_TypeDef *RTCx)
- {
- CLEAR_BIT(RTCx->CRL, RTC_CRL_ALRF);
- }
- /**
- * @brief Get Registers synchronization flag
- * @rmtoll CRL RSF LL_RTC_IsActiveFlag_RS
- * @param RTCx RTC Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RS(RTC_TypeDef *RTCx)
- {
- return (READ_BIT(RTCx->CRL, RTC_CRL_RSF) == (RTC_CRL_RSF));
- }
- /**
- * @brief Clear Registers synchronization flag
- * @rmtoll CRL RSF LL_RTC_ClearFlag_RS
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_ClearFlag_RS(RTC_TypeDef *RTCx)
- {
- CLEAR_BIT(RTCx->CRL, RTC_CRL_RSF);
- }
- /**
- * @brief Get Registers OverFlow flag
- * @rmtoll CRL OWF LL_RTC_IsActiveFlag_OW
- * @param RTCx RTC Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_OW(RTC_TypeDef *RTCx)
- {
- return (READ_BIT(RTCx->CRL, RTC_CRL_OWF) == (RTC_CRL_OWF));
- }
- /**
- * @brief Clear Registers OverFlow flag
- * @rmtoll CRL OWF LL_RTC_ClearFlag_OW
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_ClearFlag_OW(RTC_TypeDef *RTCx)
- {
- CLEAR_BIT(RTCx->CRL, RTC_CRL_OWF);
- }
- /**
- * @brief Get Registers synchronization flag
- * @rmtoll CRL SECF LL_RTC_IsActiveFlag_SEC
- * @param RTCx RTC Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_SEC(RTC_TypeDef *RTCx)
- {
- return (READ_BIT(RTCx->CRL, RTC_CRL_SECF) == (RTC_CRL_SECF));
- }
- /**
- * @brief Clear Registers synchronization flag
- * @rmtoll CRL SECF LL_RTC_ClearFlag_SEC
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_ClearFlag_SEC(RTC_TypeDef *RTCx)
- {
- CLEAR_BIT(RTCx->CRL, RTC_CRL_SECF);
- }
- /**
- * @brief Get RTC Operation OFF status flag
- * @rmtoll CRL RTOFF LL_RTC_IsActiveFlag_RTOF
- * @param RTCx RTC Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RTOF(RTC_TypeDef *RTCx)
- {
- return (READ_BIT(RTCx->CRL, RTC_CRL_RTOFF) == (RTC_CRL_RTOFF));
- }
- /**
- * @}
- */
- /** @defgroup RTC_LL_EF_IT_Management IT_Management
- * @{
- */
- /**
- * @brief Enable Alarm interrupt
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @rmtoll CRH ALRIE LL_RTC_EnableIT_ALR
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_EnableIT_ALR(RTC_TypeDef *RTCx)
- {
- SET_BIT(RTCx->CRH, RTC_CRH_ALRIE);
- }
- /**
- * @brief Disable Alarm interrupt
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @rmtoll CRH ALRIE LL_RTC_DisableIT_ALR
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_DisableIT_ALR(RTC_TypeDef *RTCx)
- {
- CLEAR_BIT(RTCx->CRH, RTC_CRH_ALRIE);
- }
- /**
- * @brief Check if Alarm interrupt is enabled or not
- * @rmtoll CRH ALRIE LL_RTC_IsEnabledIT_ALR
- * @param RTCx RTC Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALR(RTC_TypeDef *RTCx)
- {
- return (READ_BIT(RTCx->CRH, RTC_CRH_ALRIE) == (RTC_CRH_ALRIE));
- }
- /**
- * @brief Enable Second Interrupt interrupt
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @rmtoll CRH SECIE LL_RTC_EnableIT_SEC
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_EnableIT_SEC(RTC_TypeDef *RTCx)
- {
- SET_BIT(RTCx->CRH, RTC_CRH_SECIE);
- }
- /**
- * @brief Disable Second interrupt
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @rmtoll CRH SECIE LL_RTC_DisableIT_SEC
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_DisableIT_SEC(RTC_TypeDef *RTCx)
- {
- CLEAR_BIT(RTCx->CRH, RTC_CRH_SECIE);
- }
- /**
- * @brief Check if Second interrupt is enabled or not
- * @rmtoll CRH SECIE LL_RTC_IsEnabledIT_SEC
- * @param RTCx RTC Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_SEC(RTC_TypeDef *RTCx)
- {
- return (READ_BIT(RTCx->CRH, RTC_CRH_SECIE) == (RTC_CRH_SECIE));
- }
- /**
- * @brief Enable OverFlow interrupt
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @rmtoll CRH OWIE LL_RTC_EnableIT_OW
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_EnableIT_OW(RTC_TypeDef *RTCx)
- {
- SET_BIT(RTCx->CRH, RTC_CRH_OWIE);
- }
- /**
- * @brief Disable OverFlow interrupt
- * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before.
- * @rmtoll CRH OWIE LL_RTC_DisableIT_OW
- * @param RTCx RTC Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_DisableIT_OW(RTC_TypeDef *RTCx)
- {
- CLEAR_BIT(RTCx->CRH, RTC_CRH_OWIE);
- }
- /**
- * @brief Check if OverFlow interrupt is enabled or not
- * @rmtoll CRH OWIE LL_RTC_IsEnabledIT_OW
- * @param RTCx RTC Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_OW(RTC_TypeDef *RTCx)
- {
- return (READ_BIT(RTCx->CRH, RTC_CRH_OWIE) == (RTC_CRH_OWIE));
- }
- /**
- * @brief Enable Tamper interrupt
- * @rmtoll CSR TPIE LL_RTC_EnableIT_TAMP
- * @param BKPx BKP Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_EnableIT_TAMP(BKP_TypeDef *BKPx)
- {
- SET_BIT(BKPx->CSR, BKP_CSR_TPIE);
- }
- /**
- * @brief Disable Tamper interrupt
- * @rmtoll CSR TPIE LL_RTC_EnableIT_TAMP
- * @param BKPx BKP Instance
- * @retval None
- */
- __STATIC_INLINE void LL_RTC_DisableIT_TAMP(BKP_TypeDef *BKPx)
- {
- CLEAR_BIT(BKPx->CSR, BKP_CSR_TPIE);
- }
- /**
- * @brief Check if all the TAMPER interrupts are enabled or not
- * @rmtoll CSR TPIE LL_RTC_IsEnabledIT_TAMP
- * @param BKPx BKP Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP(BKP_TypeDef *BKPx)
- {
- return (READ_BIT(BKPx->CSR, BKP_CSR_TPIE) == BKP_CSR_TPIE);
- }
- /**
- * @}
- */
- #if defined(USE_FULL_LL_DRIVER)
- /** @defgroup RTC_LL_EF_Init Initialization and de-initialization functions
- * @{
- */
- ErrorStatus LL_RTC_DeInit(RTC_TypeDef *RTCx);
- ErrorStatus LL_RTC_Init(RTC_TypeDef *RTCx, LL_RTC_InitTypeDef *RTC_InitStruct);
- void LL_RTC_StructInit(LL_RTC_InitTypeDef *RTC_InitStruct);
- ErrorStatus LL_RTC_TIME_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_TimeTypeDef *RTC_TimeStruct);
- void LL_RTC_TIME_StructInit(LL_RTC_TimeTypeDef *RTC_TimeStruct);
- ErrorStatus LL_RTC_ALARM_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_AlarmTypeDef *RTC_AlarmStruct);
- void LL_RTC_ALARM_StructInit(LL_RTC_AlarmTypeDef *RTC_AlarmStruct);
- ErrorStatus LL_RTC_EnterInitMode(RTC_TypeDef *RTCx);
- ErrorStatus LL_RTC_ExitInitMode(RTC_TypeDef *RTCx);
- ErrorStatus LL_RTC_WaitForSynchro(RTC_TypeDef *RTCx);
- ErrorStatus LL_RTC_TIME_SetCounter(RTC_TypeDef *RTCx, uint32_t TimeCounter);
- ErrorStatus LL_RTC_ALARM_SetCounter(RTC_TypeDef *RTCx, uint32_t AlarmCounter);
- /**
- * @}
- */
- #endif /* USE_FULL_LL_DRIVER */
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
- #endif /* defined(RTC) */
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __STM32F1xx_LL_RTC_H */
|