100 lines
2.5 KiB
C
100 lines
2.5 KiB
C
/**
|
|
* @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(void);
|
|
|
|
/**
|
|
* @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__
|