/* ****************************************************************************** * @file HAL_RTC.h * @version V1.0.0 * @date 2020 * @brief Header file of RTC HAL module. ****************************************************************************** */ #ifndef __HAL_RTC_H__ #define __HAL_RTC_H__ #include "ACM32Fxx_HAL.h" /************************************************************************************/ /* Registers Bits Definition */ /************************************************************************************/ /**************** Bit definition for RTC IE Register ***********************/ #define RTC_IE_STP2RIE (BIT16) #define RTC_IE_STP2FIE (BIT15) #define RTC_IE_STP1RIE (BIT14) #define RTC_IE_STP1FIE (BIT13) #define RTC_IE_ADJ32 (BIT12) #define RTC_IE_ALM (BIT11) #define RTC_IE_1KHZ (BIT10) #define RTC_IE_256HZ (BIT9) #define RTC_IE_64HZ (BIT8) #define RTC_IE_16HZ (BIT7) #define RTC_IE_8HZ (BIT6) #define RTC_IE_4HZ (BIT5) #define RTC_IE_2HZ (BIT4) #define RTC_IE_SEC (BIT3) #define RTC_IE_MIN (BIT2) #define RTC_IE_HOUR (BIT1) #define RTC_IE_DATE (BIT0) /**************** Bit definition for RTC SR Register ***********************/ #define RTC_SR_STP2RIE (BIT16) #define RTC_SR_STP2FIE (BIT15) #define RTC_SR_STP1RIE (BIT14) #define RTC_SR_STP1FIE (BIT13) #define RTC_SR_ADJ32 (BIT12) #define RTC_SR_ALM (BIT11) #define RTC_SR_1KHZ (BIT10) #define RTC_SR_256HZ (BIT9) #define RTC_SR_64HZ (BIT8) #define RTC_SR_16HZ (BIT7) #define RTC_SR_8HZ (BIT6) #define RTC_SR_4HZ (BIT5) #define RTC_SR_2HZ (BIT4) #define RTC_SR_SEC (BIT3) #define RTC_SR_MIN (BIT2) #define RTC_SR_HOUR (BIT1) #define RTC_SR_DATE (BIT0) /**************** Bit definition for RTC CR Register ***********************/ #define RTC_CR_TAMPFLTCLK (BIT22) #define RTC_CR_TS2EDGE (BIT21) #define RTC_CR_TAMP2FLT (BIT19|BIT20) #define RTC_CR_TAMP2FLTEN (BIT18) #define RTC_CR_TAMP2FCLR (BIT17) #define RTC_CR_TAMP2RCLR (BIT16) #define RTC_CR_TS1EDGE (BIT15) #define RTC_CR_TAMP1FLT (BIT13|BIT14) #define RTC_CR_TAMP1FLTEN (BIT12) #define RTC_CR_ALM_MKSD (BIT11) #define RTC_CR_ALM_MSKH (BIT10) #define RTC_CR_ALM_MSKM (BIT9) #define RTC_CR_TAMP1FCLR (BIT8) #define RTC_CR_TAMP1RCLR (BIT7) #define RTC_CR_TAMP2EN (BIT6) #define RTC_CR_TAMP1EN (BIT5) #define RTC_CR_ALM_EN (BIT4) #define RTC_CR_FSEL (BIT0|BIT1|BIT2|BIT3) /**************** Bit definition for RTC_PMU CR Register ***********************/ #define RPMU_CR_WU6FILEN BIT29 #define RPMU_CR_WU5FILEN BIT28 #define RPMU_CR_WU4FILEN BIT27 #define RPMU_CR_WU3FILEN BIT26 #define RPMU_CR_WU2FILEN BIT25 #define RPMU_CR_WU1FILEN BIT24 #define RPMU_CR_EWUP6 BIT21 #define RPMU_CR_EWUP5 BIT20 #define RPMU_CR_EWUP4 BIT19 #define RPMU_CR_EWUP3 BIT18 #define RPMU_CR_EWUP2 BIT17 #define RPMU_CR_EWUP1 BIT16 #define RPMU_CR_BORRST_EN BIT12 #define RPMU_CR_WK_TIME (BIT9|BIT10|BIT11) #define RPMU_CR_STB_EN BIT8 #define RPMU_CR_BDRST BIT6 #define RPMU_CR_RTCEN BIT5 #define RPMU_CR_RTCSEL (BIT2|BIT3) #define RPMU_CR_CWUF BIT1 #define RPMU_CR_CSBF BIT0 /**************** Bit definition for RTC_PMU ANACR Register ***********************/ #define RPMU_SR_BORWUF BIT13 #define RPMU_SR_IWDTWUF BIT12 #define RPMU_SR_RSTWUF BIT11 #define RPMU_SR_RTCWUF BIT10 #define RPMU_SR_WUP6F BIT6 #define RPMU_SR_WUP5F BIT5 #define RPMU_SR_WUP4F BIT4 #define RPMU_SR_WUP3F BIT3 #define RPMU_SR_WUP2F BIT2 #define RPMU_SR_WUP1F BIT1 #define RPMU_SR_SBF BIT0 /**************** Bit definition for RTC_PMU ANACR Register ***********************/ #define RPMU_ANACR_BOR_CFG (BIT24|BIT25) #define RPMU_ANACR_BOR_EN BIT23 #define RPMU_ANACR_LPBGR_TRIM (BIT20|BIT21|BIT22) #define RPMU_ANACR_RC32K_TRIM (BIT10|BIT11|BIT12|BIT13|BIT14|BIT15) #define RPMU_ANACR_RC32K_RDY BIT9 #define RPMU_ANACR_RC32K_EN BIT8 #define RPMU_ANACR_XTLDRV_2 BIT5 #define RPMU_ANACR_XTLDRV_1 BIT4 #define RPMU_ANACR_XTLDRV_0 BIT3 #define RPMU_ANACR_XTLDRV (BIT3|BIT4|BIT5) #define RPMU_ANACR_XTLBYO BIT2 #define RPMU_ANACR_XTLRDY BIT1 #define RPMU_ANACR_XTLEN BIT0 /** @defgroup ClockSource * @{ */ #define RTC_CLOCK_RC32K (0x00000000) #define RTC_CLOCK_XTL (0x00000004) /** * @} */ /** @defgroup Clock_Compensation * @{ */ #define COMPENSATION_INCREASE (0x00000000) #define COMPENSATION_DECREASE (0x00000400) /** * @} */ /** @defgroup RTC_Month_Date_Definitions RTC Month Date Definitions * @{ */ /* Coded in BCD format */ #define RTC_MONTH_JANUARY (0x01) #define RTC_MONTH_FEBRUARY (0x02) #define RTC_MONTH_MARCH (0x03) #define RTC_MONTH_APRIL (0x04) #define RTC_MONTH_MAY (0x05) #define RTC_MONTH_JUNE (0x06) #define RTC_MONTH_JULY (0x07) #define RTC_MONTH_AUGUST (0x08) #define RTC_MONTH_SEPTEMBER (0x09) #define RTC_MONTH_OCTOBER (0x10) #define RTC_MONTH_NOVEMBER (0x11) #define RTC_MONTH_DECEMBER (0x12) /** * @} */ /** @defgroup RTC_WeekDay_Definitions RTC WeekDay Definitions * @{ */ #define RTC_WEEKDAY_MONDAY (0x01) #define RTC_WEEKDAY_TUESDAY (0x02) #define RTC_WEEKDAY_WEDNESDAY (0x03) #define RTC_WEEKDAY_THURSDAY (0x04) #define RTC_WEEKDAY_FRIDAY (0x05) #define RTC_WEEKDAY_SATURDAY (0x06) #define RTC_WEEKDAY_SUNDAY (0x07) /** * @} */ /** @defgroup RTC_Alarm_Mode Definitions * @{ */ #define RTC_ALARM_WEEK_MODE (0x00000000) #define RTC_ALARM_DAY_MODE (0x80000000) /** * @} */ /** @defgroup RTC_AlarmInterrupt Definitions * @{ */ #define RTC_ALARM_INT_ENABLE (0x00000000) #define RTC_ALARM_INT_DISABLE (0x00000001) /** * @} */ /** @defgroup RTC_DayMask Definitions * @{ */ #define RTC_ALARM_DAY_MASK_ENABLE RTC_CR_ALM_MKSD #define RTC_ALARM_DAY_MASK_DISABLE (0x00000000) /** * @} */ /** @defgroup RTC_HourMask Definitions * @{ */ #define RTC_ALARM_HOUR_MASK_ENABLE RTC_CR_ALM_MSKH #define RTC_ALARM_HOUR_MASK_DISABLE (0x00000000) /** * @} */ /** @defgroup RTC_MinMask Definitions * @{ */ #define RTC_ALARM_MIN_MASK_ENABLE RTC_CR_ALM_MSKM #define RTC_ALARM_MIN_MASK_DISABLE (0x00000000) /** * @} */ /** @defgroup RTC_Alarm_WeekSelect Definitions * @{ */ #define RTC_ALARM_WEEK_SUNDAY (0x01000000) #define RTC_ALARM_WEEK_MONDAY (0x02000000) #define RTC_ALARM_WEEK_TUESDAY (0x04000000) #define RTC_ALARM_WEEK_WEDNESDAY (0x08000000) #define RTC_ALARM_WEEK_THURSDAY (0x10000000) #define RTC_ALARM_WEEK_FRIDAY (0x20000000) #define RTC_ALARM_WEEK_SATURDAY (0x40000000) /** * @} */ /** @defgroup RTC_Temper_edge Definitions * @{ */ #define RTC_TEMP_EDGE_RISING (0x00000000) #define RTC_TEMP_EDGE_FALLING (0x00000001) /** * @} */ /** @defgroup RTC_TemperInterrupt Definitions * @{ */ #define RTC_TEMP_INT_DISABLE (0x00000000) #define RTC_TEMP_INT_ENABLE (0x00000001) /** * @} */ /** @defgroup RTC_ClearBackup Definitions * @{ */ #define RTC_TEMP_CLEAR_DISABLE (0x00000000) #define RTC_TEMP_CLEAR_ENABLE (0x00000001) /** * @} */ /** @defgroup RTC_TemperFilter Definitions * @{ */ #define RTC_TEMP_FILTER_DISABLE (0x00000000) #define RTC_TEMP_FILTER_512_RTCCLK (0x00000001) #define RTC_TEMP_FILTER_1_RTCCLK (0x00000002) #define RTC_TEMP_FILTER_2_RTCCLK (0x00000003) #define RTC_TEMP_FILTER_4_RTCCLK (0x00000004) #define RTC_TEMP_FILTER_8_RTCCLK (0x00000005) /** * @} */ /** * @brief RTC Temper index definition */ typedef enum { RTC_TEMPER_1, RTC_TEMPER_2, }enum_Temper_t; /** * @} */ /** * @brief RTC wakeup source form standby */ typedef enum { RTC_WAKEUP_RTC_INT = 0, RTC_WAKEUP_WKUP1 = 0x00010000, // PA0 RTC_WAKEUP_WKUP2 = 0x00020000, // PC13 RTC_WAKEUP_WKUP3 = 0x00040000, // PA2 RTC_WAKEUP_WKUP4 = 0x00080000, // PC5 RTC_WAKEUP_WKUP5 = 0x00100000, // PB5 RTC_WAKEUP_WKUP6 = 0x00200000, // PB15 RTC_WAKEUP_STAMP2 = (RTC_IE_STP2RIE | RTC_IE_STP2FIE), RTC_WAKEUP_STAMP1 = (RTC_IE_STP1RIE | RTC_IE_STP1FIE), RTC_WAKEUP_32S = RTC_IE_ADJ32, RTC_WAKEUP_ALARM = RTC_IE_ALM, RTC_WAKEUP_SEC = RTC_IE_SEC, RTC_WAKEUP_MIN = RTC_IE_MIN, RTC_WAKEUP_HOUR = RTC_IE_HOUR, RTC_WAKEUP_DATE = RTC_IE_DATE, }enum_WKUP_t; #define STANDBY_WAKEUP_RISING 0 #define STANDBY_WAKEUP_FALLING 1 /** * @} */ /** * @brief Check RTC wakeup source form standby */ #define RTC_WAKEUP_SOURCE_BORWUF (0x00002000) #define RTC_WAKEUP_SOURCE_IWDTWUF (0x00001000) #define RTC_WAKEUP_SOURCE_RSTWUF (0x00000800) #define RTC_WAKEUP_SOURCE_RTCWUF (0x00000400) #define RTC_WAKEUP_SOURCE_WKUP6 (0x00000040) #define RTC_WAKEUP_SOURCE_WKUP5 (0x00000020) #define RTC_WAKEUP_SOURCE_WKUP4 (0x00000010) #define RTC_WAKEUP_SOURCE_WKUP3 (0x00000008) #define RTC_WAKEUP_SOURCE_WKUP2 (0x00000004) #define RTC_WAKEUP_SOURCE_WKUP1 (0x00000002) /** * @} */ /** * @brief RTC Configuration Structure definition */ typedef struct { uint32_t u32_ClockSource; /*!< The RTC Clock Source to be configured. This parameter can be a value of @ref ClockSource */ uint32_t u32_Compensation; /*!< The RTC Clock Compensation to be configured. This parameter can be a value of @ref Clock_Compensation */ uint32_t u32_CompensationValue; /*!< The RTC Clock Compensation Value to be configured. This parameter must be a number between Min_Data = 0x000 and Max_Data = 0x1FF */ }RTC_ConfigTypeDef; /** * @brief RTC Date structure definition */ typedef struct { uint8_t u8_Year; /*!< Specifies the RTC Date Year. This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x99 */ uint8_t u8_Month; /*!< Specifies the RTC Date Month (in BCD format). This parameter can be a value of @ref RTC_Month_Date_Definitions */ uint8_t u8_Date; /*!< Specifies the RTC Date. This parameter must be a number between Min_Data = 0x01 and Max_Data = 0x31 */ uint8_t u8_WeekDay; /*!< Specifies the RTC Date WeekDay. This parameter can be a value of @ref RTC_WeekDay_Definitions */ }RTC_DateTypeDef; /* Attention: Year、Month、Date、Week use BCD code */ /** * @brief RTC Time structure definition */ typedef struct { uint8_t u8_Hours; /*!< Specifies the RTC Time Hour. This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x23 */ uint8_t u8_Minutes; /*!< Specifies the RTC Time Minutes. This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x59 */ uint8_t u8_Seconds; /*!< Specifies the RTC Time Seconds. This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x59 */ }RTC_TimeTypeDef; /* Attention: Hour、Minute、Second use BCD code */ /** * @brief RTC Time structure definition */ typedef struct { uint32_t u32_AlarmMode; /*!< Specifies the RTC alarm Mode. This parameter can be a value of @ref RTC_Alarm_Mode */ uint32_t u32_AlarmInterrupt; /*!< Specifies the RTC alarm interrupt Enable or Disable. This parameter can be a value of @ref RTC_AlarmInterrupt */ uint32_t u32_DayMask; /*!< Specifies the RTC alarm Day/Week Mask. This parameter can be a value of @ref RTC_DayMask */ uint32_t u32_HourMask; /*!< Specifies the RTC alarm Hour Mask. This parameter can be a value of @ref RTC_HourMask */ uint32_t u32_MinMask; /*!< Specifies the RTC alarm Min Mask. This parameter can be a value of @ref RTC_MinMask */ uint32_t u32_AlarmWeek; /*!< Specifies the RTC alarm week select(Select WeekMode this parameter is valid). This parameter can be a value of @ref RTC_Alarm_WeekSelect */ uint32_t u32_AlarmDay; /*!< Specifies the RTC alarm day select(Select DayMode this parameter is valid). This parameter must be a number between Min_Data = 0x01 and Max_Data = 0x31 */ uint32_t u32_Hours; /*!< Specifies the RTC alarm Hour. This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x23 */ uint32_t u32_Minutes; /*!< Specifies the RTC alarm Minutes. This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x59 */ uint32_t u32_Seconds; /*!< Specifies the RTC alarm Seconds. This parameter must be a number between Min_Data = 0x00 and Max_Data = 0x59 */ }RTC_AlarmTypeDef; /** * @brief RTC Temper structure definition */ typedef struct { uint32_t u32_TemperEdge; /*!< Specifies the RTC Temper edge select. This parameter can be a value of @ref RTC_Temper_edge */ uint32_t u32_InterruptEN; /*!< Specifies the RTC Temper interrupt enable. This parameter can be a value of @ref RTC_TemperInterrupt */ uint32_t u32_ClearBackup; /*!< Specifies the RTC Temper clear backup register. This parameter can be a value of @ref RTC_ClearBackup */ uint32_t u32_Filter; /*!< Specifies the RTC Temper Filter select. This parameter can be a value of @ref RTC_TemperFilter */ }RTC_TemperTypeDef; /** @brief PC13 function select * @param __FUNC__: PC13 function select. * This parameter can be 0: GPIO,1:RTC Fout,2:RTC tamper 3:PC13 Value */ #define __HAL_RTC_PC13_SEL(__FUNC__) (PMU->IOSEL |= (PMU->IOSEL & ~(0x3)) | (__FUNC__)) /** @brief PC14 function select * @param __FUNC__: PC14 function select. * This parameter can be 0: GPIO,1:PC14 Value */ #define __HAL_RTC_PC14_SEL(__FUNC__) (PMU->IOSEL |= (PMU->IOSEL & ~(0x3 << 3)) | (__FUNC__ << 3)) /** @brief PC15 function select * @param __FUNC__: PC15 function select. * This parameter can be 0: GPIO,1:PC15 Value */ #define __HAL_RTC_PC15_SEL(__FUNC__) (PMU->IOSEL |= (PMU->IOSEL & ~(0x3 << 5)) | (__FUNC__ << 5)) /** @brief PC13 Value set * @param __FUNC__: PC13 Value set. * This parameter can be 0: set,1:claer */ #define __HAL_RTC_PC13_VALUE(__VALUE__) (PMU->IOSEL |= (PMU->IOSEL & ~(1 << 8)) | (__VALUE__ << 8)) /** @brief PC14 Value set * @param __FUNC__: PC14 Value set. * This parameter can be 0: set,1:claer */ #define __HAL_RTC_PC14_VALUE(__VALUE__) (PMU->IOSEL |= (PMU->IOSEL & ~(1 << 9)) | (__VALUE__ << 9)) /** @brief PC15 Value set * @param __FUNC__: PC15 Value set. * This parameter can be 0: set,1:claer */ #define __HAL_RTC_PC15_VALUE(__VALUE__) (PMU->IOSEL |= (PMU->IOSEL & ~(1 << 10)) | (__VALUE__ << 10)) /* @brief PC13、PC14、PC15 pull up or pull down */ #define __HAL_RTC_PC13_PULL_UP_ENABLE() (PMU->IOCR |= BIT0) #define __HAL_RTC_PC13_PULL_UP_DISABLE() (PMU->IOCR &= ~BIT0) #define __HAL_RTC_PC13_PULL_DOWN_ENABLE() (PMU->IOCR |= BIT1) #define __HAL_RTC_PC13_PULL_DOWN_DISABLE() (PMU->IOCR &= ~BIT1) #define __HAL_RTC_PC14_PULL_UP_ENABLE() (PMU->IOCR |= BIT8) #define __HAL_RTC_PC14_PULL_UP_DISABLE() (PMU->IOCR &= ~BIT8) #define __HAL_RTC_PC14_PULL_DOWN_ENABLE() (PMU->IOCR |= BIT9) #define __HAL_RTC_PC14_PULL_DOWN_DISABLE() (PMU->IOCR &= ~BIT9) #define __HAL_RTC_PC15_PULL_UP_ENABLE() (PMU->IOCR |= BIT16) #define __HAL_RTC_PC15_PULL_UP_DISABLE() (PMU->IOCR &= ~BIT16) #define __HAL_RTC_PC15_PULL_DOWN_ENABLE() (PMU->IOCR |= BIT17) #define __HAL_RTC_PC15_PULL_DOWN_DISABLE() (PMU->IOCR &= ~BIT17) /* @brief PC13、PC14、PC15 digit or analog */ #define __HAL_RTC_PC13_ANALOG() (PMU->IOCR |= BIT6) #define __HAL_RTC_PC13_DIGIT() (PMU->IOCR &= ~BIT6) #define __HAL_RTC_PC14_ANALOG() (PMU->IOCR |= BIT14) #define __HAL_RTC_PC14_DIGIT() (PMU->IOCR &= ~BIT14) #define __HAL_RTC_PC15_ANALOG() (PMU->IOCR |= BIT22) #define __HAL_RTC_PC15_DIGIT() (PMU->IOCR &= ~BIT22) /** @defgroup RTC Private Macros * @{ */ #define IS_RTC_CLOCKSRC(__CLOCKSRC__) (((__CLOCKSRC__) == RTC_CLOCK_RC32K) || \ ((__CLOCKSRC__) == RTC_CLOCK_XTL)) #define IS_RTC_COMPENSATION(__COMPENSATION__) (((__COMPENSATION__) == COMPENSATION_INCREASE) || \ ((__COMPENSATION__) == COMPENSATION_DECREASE)) #define IS_RTC_YEAR(__YEAR__) ((__YEAR__) <= 0x99) #define IS_RTC_MONTH(__MONTH__) (((__MONTH__) == RTC_MONTH_JANUARY) || \ ((__MONTH__) == RTC_MONTH_FEBRUARY) || \ ((__MONTH__) == RTC_MONTH_MARCH) || \ ((__MONTH__) == RTC_MONTH_APRIL) || \ ((__MONTH__) == RTC_MONTH_MAY) || \ ((__MONTH__) == RTC_MONTH_JUNE) || \ ((__MONTH__) == RTC_MONTH_JULY) || \ ((__MONTH__) == RTC_MONTH_AUGUST) || \ ((__MONTH__) == RTC_MONTH_SEPTEMBER) || \ ((__MONTH__) == RTC_MONTH_OCTOBER) || \ ((__MONTH__) == RTC_MONTH_NOVEMBER) || \ ((__MONTH__) == RTC_MONTH_DECEMBER)) #define IS_RTC_DAY(__DAY__) ((__DAY__) >= 0x01 && (__DAY__) <= 0x31) #define IS_RTC_WEEKDAY(__WEEKDAY__) (((__WEEKDAY__) == RTC_WEEKDAY_MONDAY) || \ ((__WEEKDAY__) == RTC_WEEKDAY_TUESDAY) || \ ((__WEEKDAY__) == RTC_WEEKDAY_WEDNESDAY) || \ ((__WEEKDAY__) == RTC_WEEKDAY_THURSDAY) || \ ((__WEEKDAY__) == RTC_WEEKDAY_FRIDAY) || \ ((__WEEKDAY__) == RTC_WEEKDAY_SATURDAY) || \ ((__WEEKDAY__) == RTC_WEEKDAY_SUNDAY)) #define IS_RTC_HOUR(__HOUR__) ((__HOUR__) <= 0x23) #define IS_RTC_MIN(__MIN__) ((__MIN__) <= 0x59) #define IS_RTC_SEC(__SEC__) ((__SEC__) <= 0x60) #define IS_RTC_ALARM_MODE(__MODE__) (((__MODE__) == RTC_ALARM_WEEK_MODE) || \ ((__MODE__) == RTC_ALARM_DAY_MODE)) #define IS_RTC_ALARM_INT(__INT__) (((__INT__) == RTC_ALARM_INT_ENABLE) || \ ((__INT__) == RTC_ALARM_INT_DISABLE)) #define IS_RTC_ALARM_DAY_MASK(__MASKD__) (((__MASKD__) == RTC_ALARM_DAY_MASK_ENABLE) || \ ((__MASKD__) == RTC_ALARM_DAY_MASK_DISABLE)) #define IS_RTC_ALARM_HOUR_MASK(__MASKH__) (((__MASKH__) == RTC_ALARM_HOUR_MASK_ENABLE) || \ ((__MASKH__) == RTC_ALARM_HOUR_MASK_DISABLE)) #define IS_RTC_ALARM_MIN_MASK(__MASKM__) (((__MASKM__) == RTC_ALARM_MIN_MASK_ENABLE) || \ ((__MASKM__) == RTC_ALARM_MIN_MASK_DISABLE)) #define IS_RTC_ALARM_WEEKDAY(__WEEKDAY__) (((__WEEKDAY__) == RTC_ALARM_WEEK_SUNDAY) || \ ((__WEEKDAY__) == RTC_ALARM_WEEK_MONDAY) || \ ((__WEEKDAY__) == RTC_ALARM_WEEK_TUESDAY) || \ ((__WEEKDAY__) == RTC_ALARM_WEEK_WEDNESDAY) || \ ((__WEEKDAY__) == RTC_ALARM_WEEK_THURSDAY) || \ ((__WEEKDAY__) == RTC_ALARM_WEEK_FRIDAY) || \ ((__WEEKDAY__) == RTC_ALARM_WEEK_SATURDAY) || \ ((__WEEKDAY__) >= 0x01000000 && (__WEEKDAY__) <= 0x7F000000)) #define IS_RTC_TEMP_EDGE(__EDGE__) (((__EDGE__) == RTC_TEMP_EDGE_RISING) || \ ((__EDGE__) == RTC_TEMP_EDGE_FALLING)) #define IS_RTC_TEMP_INT(__INT__) (((__INT__) == RTC_TEMP_INT_ENABLE) || \ ((__INT__) == RTC_TEMP_INT_DISABLE)) #define IS_RTC_TEMP_CLEAR_BACKUP(__CLEAR__) (((__CLEAR__) == RTC_TEMP_CLEAR_DISABLE) || \ ((__CLEAR__) == RTC_TEMP_CLEAR_ENABLE)) #define IS_RTC_TEMP_FILTER(__FILTER__) (((__FILTER__) == RTC_TEMP_FILTER_DISABLE) || \ ((__FILTER__) == RTC_TEMP_FILTER_512_RTCCLK) || \ ((__FILTER__) == RTC_TEMP_FILTER_1_RTCCLK) || \ ((__FILTER__) == RTC_TEMP_FILTER_2_RTCCLK) || \ ((__FILTER__) == RTC_TEMP_FILTER_4_RTCCLK) || \ ((__FILTER__) == RTC_TEMP_FILTER_8_RTCCLK)) /** * @} */ /* RTC stamp1 interrupt enable、disable */ #define __HAL_RTC_ENABLE_STAMP1_IT (RTC->IE |= (RTC_IE_STP1RIE | RTC_IE_STP1FIE)) #define __HAL_RTC_DISABLE_STAMP1_IT (RTC->IE &= ~(RTC_IE_STP1RIE | RTC_IE_STP1FIE)) /* RTC stamp2 interrupt enable、disable */ #define __HAL_RTC_ENABLE_STAMP2_IT (RTC->IE |= (RTC_IE_STP2RIE | RTC_IE_STP2FIE)) #define __HAL_RTC_DISABLE_STAMP2_IT (RTC->IE &= ~(RTC_IE_STP2RIE | RTC_IE_STP2FIE)) /* RTC 32S interrupt enable、disable */ #define __HAL_RTC_ENABLE_32S_IT (RTC->IE |= RTC_IE_ADJ32) #define __HAL_RTC_DISABLE_32S_IT (RTC->IE &= ~RTC_IE_ADJ32) /* RTC alarm interrupt enable、disable */ #define __HAL_RTC_ENABLE_ALM_IT (RTC->IE |= RTC_IE_ALM) #define __HAL_RTC_DISABLE_ALM_IT (RTC->IE &= RTC_IE_ALM) /* RTC sec interrupt enable、disable */ #define __HAL_RTC_ENABLE_SEC_IT (RTC->IE |= RTC_IE_SEC) #define __HAL_RTC_DISABLE_SEC_IT (RTC->IE &= ~RTC_IE_SEC) /* RTC Minutes interrupt enable、disable */ #define __HAL_RTC_ENABLE_MIN_IT (RTC->IE |= RTC_IE_MIN) #define __HAL_RTC_DISABLE_MIN_IT (RTC->IE &= ~RTC_IE_MIN) /* RTC Hour interrupt enable、disable */ #define __HAL_RTC_ENABLE_HOUR_IT (RTC->IE |= RTC_IE_HOUR) #define __HAL_RTC_DISABLE_HOUR_IT (RTC->IE &= ~RTC_IE_HOUR) /* RTC Date interrupt enable、disable */ #define __HAL_RTC_ENABLE_DATE_IT (RTC->IE |= RTC_IE_DATE) #define __HAL_RTC_DISABLE_DATE_IT (RTC->IE &= ~RTC_IE_DATE) /* HAL_RTC_Config */ HAL_StatusTypeDef HAL_RTC_Config(RTC_ConfigTypeDef *hrtc); /* HAL_RTC_SetTime */ void HAL_RTC_SetTime(RTC_TimeTypeDef *fp_Time); /* HAL_RTC_GetTime */ void HAL_RTC_GetTime(RTC_TimeTypeDef *fp_Time); /* HAL_RTC_SetDate */ void HAL_RTC_SetDate(RTC_DateTypeDef *fp_Date); /* HAL_RTC_GetDate */ void HAL_RTC_GetDate(RTC_DateTypeDef *fp_Date); /* HAL_RTC_AlarmConfig */ void HAL_RTC_AlarmConfig(RTC_AlarmTypeDef *fp_Alarm); /* HAL_RTC_AlarmEnable */ void HAL_RTC_AlarmEnable(void); /* HAL_RTC_AlarmDisable */ void HAL_RTC_AlarmDisable(void); /* HAL_RTC_Tamper */ void HAL_RTC_Tamper(enum_Temper_t fe_Temper, RTC_TemperTypeDef *fp_Temper); /* HAL_RTC_TamperEnable */ void HAL_RTC_TamperEnable(enum_Temper_t fe_Temper); /* HAL_RTC_TamperDisable */ void HAL_RTC_TamperDisable(enum_Temper_t fe_Temper); /* HAL_RTC_Standby_Wakeup */ void HAL_RTC_Standby_Wakeup(enum_WKUP_t fe_Wakeup, uint32_t fu32_Edge); /* HAL_RTC_Get_StandbyStatus */ bool HAL_RTC_Get_StandbyStatus(void); /* HAL_RTC_Get_StandbyWakeupSource */ uint32_t HAL_RTC_Get_StandbyWakeupSource(void); #endif