/** * @file rtc_rx8010.h * @author xxx * @date 2023-08-30 14:05:55 * @brief 头文件 rtc_rx8010.h * @copyright Copyright (c) 2023 by xxx, All Rights Reserved. */ #ifndef __RTC_RX8010_H__ #define __RTC_RX8010_H__ #include "main.h" #define RTC_DEVICE_ADDR 0x32 #define RTC_WR_ADDR ((RTC_DEVICE_ADDR << 1) | 0) #define RTC_RD_ADDR ((RTC_DEVICE_ADDR << 1) | 1) #define RTC_FLAG_ADDR 0x1e #define RTC_CLOCK_ADDR 0x10 #define RTC_CONTROL_ADDR 0x1f #define RTC_REG17_ADDR 0x17 #define RTC_REG17_DATA 0xd8 #define RTC_REG30_ADDR 0x30 #define RTC_REG30_DATA 0x00 #define RTC_REG31_ADDR 0x31 #define RTC_REG31_DATA 0x08 #define RTC_IRQ_ADDR 0x32 #define RTC_IRQ_DATA 0x00 typedef enum { SUN = BIT0, MON = BIT1, TUE = BIT2, WED = BIT3, THUR = BIT4, FRI = BIT5, SAT = BIT6 } rtc_week_e; ///< 星期码 typedef struct { uint8_t year; ///< 7 bit - 1 63 uint8_t month; ///< 4 bit uint8_t day; ///< 5 bit uint8_t weekday; ///< rtc_week_e uint8_t hour; ///< 5 bit uint8_t minute; ///< 6 bit uint8_t second; ///< 6 bit } rtc_date; /** * @brief Initializes the RTC module. * @return TRUE if the initialization is successful, FALSE otherwise. */ extern BOOL rtc_init(TIM_TypeDef *timer_us); /** * @brief Deinitializes the RTC module. * @return TRUE if the deinitialization is successful, FALSE otherwise. */ extern BOOL rtc_dinit(void); /** * @brief Retrieves the current clock time from the RTC module. * @param read_buf Pointer to the buffer to store the clock time. * @return TRUE if the clock time is successfully retrieved, FALSE otherwise. */ extern BOOL rtc_get_clock_time(uint8_t *read_buf); /** * @brief Sets the clock time in the RTC module. * @param data Pointer to the RTC date structure containing the new clock time. * @return TRUE if the clock time is successfully set, FALSE otherwise. */ extern BOOL rtc_set_clock_time(rtc_date *data); /** * @brief Retrieves the current alarm time from the RTC module. * @param read_buf Pointer to the buffer to store the alarm time. * @return TRUE if the alarm time is successfully retrieved, FALSE otherwise. */ extern uint32_t rtc_timestamp(void); /** * @brief Converts the weekday value to a human-readable format. * @param weekday Pointer to the weekday value to be converted. */ extern void rtc_weekday_convert(uint8_t *weekday); /** * @brief Converts the weekday value from a human-readable format to the RTC format. * @param weekday Pointer to the weekday value to be converted. */ extern void rtc_weekday_rconvert(uint8_t *weekday); #endif ///< !__RTC_RX8010_H__