70 lines
1.3 KiB
C++
70 lines
1.3 KiB
C++
#ifndef __RTC_H__
|
|
#define __RTC_H__
|
|
|
|
#include <Wire.h>
|
|
|
|
typedef struct {
|
|
uint8_t Hours;
|
|
uint8_t Minutes;
|
|
uint8_t Seconds;
|
|
} RTC_TimeTypeDef;
|
|
|
|
typedef struct {
|
|
uint8_t WeekDay;
|
|
uint8_t Month;
|
|
uint8_t Date;
|
|
uint16_t Year;
|
|
} RTC_DateTypeDef;
|
|
|
|
class RTC {
|
|
public:
|
|
RTC();
|
|
|
|
void begin(void);
|
|
void GetBm8563Time(void);
|
|
|
|
int SetTime(RTC_TimeTypeDef* RTC_TimeStruct);
|
|
int SetDate(RTC_DateTypeDef* RTC_DateStruct);
|
|
|
|
void GetTime(RTC_TimeTypeDef* RTC_TimeStruct);
|
|
void GetDate(RTC_DateTypeDef* RTC_DateStruct);
|
|
|
|
int SetAlarmIRQ(int afterSeconds);
|
|
int SetAlarmIRQ(const RTC_TimeTypeDef& RTC_TimeStruct);
|
|
int SetAlarmIRQ(const RTC_DateTypeDef& RTC_DateStruct,
|
|
const RTC_TimeTypeDef& RTC_TimeStruct);
|
|
|
|
void clearIRQ();
|
|
void disableIRQ();
|
|
|
|
public:
|
|
uint8_t Second;
|
|
uint8_t Minute;
|
|
uint8_t Hour;
|
|
uint8_t Week;
|
|
uint8_t Day;
|
|
uint8_t Month;
|
|
uint8_t Year;
|
|
uint8_t DateString[9];
|
|
uint8_t TimeString[9];
|
|
|
|
uint8_t asc[14];
|
|
|
|
private:
|
|
void Bcd2asc(void);
|
|
void DataMask();
|
|
void Str2Time(void);
|
|
void WriteReg(uint8_t reg, uint8_t data);
|
|
uint8_t ReadReg(uint8_t reg);
|
|
uint8_t Bcd2ToByte(uint8_t Value);
|
|
uint8_t ByteToBcd2(uint8_t Value);
|
|
|
|
private:
|
|
/*定义数组用来存储读取的时间数据 */
|
|
uint8_t trdata[7];
|
|
/*定义数组用来存储转换的 asc 码时间数据*/
|
|
// uint8_t asc[14];
|
|
};
|
|
|
|
#endif
|