mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-19 16:33:20 +08:00
修复mico-sdk错误
This commit is contained in:
@@ -1,226 +1,226 @@
|
||||
/**
|
||||
*****************************************************************************
|
||||
* @file rtc.h
|
||||
* @author Yancy
|
||||
* @version V1.0.0
|
||||
* @date 19-June-2013
|
||||
* @brief rtc module driver header file
|
||||
* change log:
|
||||
* Modify by Sam -20140624
|
||||
*****************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT 2013 MVSilicon </center></h2>
|
||||
*/
|
||||
|
||||
#ifndef __RTC_H__
|
||||
#define __RTC_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif//__cplusplus
|
||||
|
||||
#include "type.h"
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD>memory<72>ֽ<EFBFBD><D6BD><EFBFBD>,<2C>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾݴ<C9BE><DDB4>Լ<EFBFBD><D4BC><EFBFBD>Ҫ֧<D2AA>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>memory<72>ռ<EFBFBD>
|
||||
*/
|
||||
#define MEM_SIZE_PER_ALARM 6
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ֧<CAB1><D6A7>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
#define MAX_ALARM_NUM 2
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
||||
*/
|
||||
#define ALARM_STATUS_OPENED 0x01 /**< <20><><EFBFBD><EFBFBD>״̬ */
|
||||
#define ALARM_STATUS_CLOSED 0x02 /**< <20>ر<EFBFBD>״̬ */
|
||||
#define ALARM_STATUS_UNUSED 0x03 /**< δʹ<CEB4><CAB9>״̬ */
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
typedef enum _RTC_ALARM_MODE
|
||||
{
|
||||
ALARM_MODE_ONCE_ONLY = 1, /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_PER_DAY, /**< ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_PER_WEEK, /**< ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_WORKDAY, /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_USER_DEFINED, /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_MAX,
|
||||
} RTC_ALARM_MODE;
|
||||
|
||||
|
||||
#pragma pack(1) /*Ensure this structure is byte aligned, and not use padding bytes */
|
||||
typedef struct _ALARM_INFO
|
||||
{
|
||||
uint32_t AlarmTimeAsSeconds;
|
||||
uint8_t AlarmStatus : 2;
|
||||
uint8_t AlarmMode : 4;
|
||||
uint8_t AlarmData; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>bit0<74><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>죬bit6<74><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
} ALARM_TIME_INFO;
|
||||
#pragma pack()
|
||||
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD>嶨<EFBFBD><E5B6A8>
|
||||
*/
|
||||
typedef struct _RTC_DATE_TIME
|
||||
{
|
||||
uint16_t Year; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t Mon; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t Date; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t WDay; /**< <20><><EFBFBD>ںţ<DABA>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>1~6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>6 */
|
||||
uint8_t Hour; /**< Сʱ<D0A1><CAB1> */
|
||||
uint8_t Min; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t Sec; /**< <20><><EFBFBD><EFBFBD> */
|
||||
} RTC_DATE_TIME;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* ũ<><C5A9>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD>嶨<EFBFBD><E5B6A8>
|
||||
*/
|
||||
typedef struct _RTC_LUNAR_DATE
|
||||
{
|
||||
uint16_t Year; /**< ũ<><C5A9><EFBFBD><EFBFBD> */
|
||||
uint8_t Month; /**< ũ<><C5A9><EFBFBD><EFBFBD> */
|
||||
uint8_t Date; /**< ũ<><C5A9><EFBFBD><EFBFBD> */
|
||||
uint8_t MonthDays; /**< ũ<><C5A9>ÿ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30 or 29*/
|
||||
bool IsLeapMonth; /**< <20>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>*/
|
||||
} RTC_LUNAR_DATE;
|
||||
|
||||
|
||||
/**
|
||||
* @brief RTCģ<43><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
* @param AlarmWorkMem:<3A>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ӹ<EFBFBD><D3B9>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD>memory<72>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>
|
||||
* @param AlarmWorkMemSize<7A><65><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ӹ<EFBFBD><D3B9>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD>memory<72>ռ<EFBFBD><D5BC>Ĵ<EFBFBD>С<EFBFBD><D0A1>AlarmWorkMemSize<7A>ɿͻ<C9BF>ϣ<EFBFBD><CFA3>ͬʱ֧<CAB1>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>memory<72>ռ<EFBFBD><D5BC><EFBFBD>rtc.h<><68><EFBFBD>ɺ궨<C9BA><EAB6A8>MEM_SIZE_PER_ALARMȷ<4D><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>
|
||||
* 8<><38><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>ô<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD>СӦΪMEM_SIZE_PER_ALARM*8<><38><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
* #define MAX_ALARM_NUM 8 //<2F><><EFBFBD><EFBFBD>ͬʱ֧<CAB1><D6A7>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* uint8_t AlarmWorkMem[MEM_SIZE_PER_ALARM * MAX_ALARM_NUM];
|
||||
* RtcInit(AlarmWorkMem, MEM_SIZE_PER_ALARM * MAX_ALARM_NUM);
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcInit(uint8_t* AlarmWorkMem, uint8_t AlarmWorkMemSize);
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
|
||||
* @param ʱ<><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD>ڷ<EFBFBD><DAB7>ص<EFBFBD>ǰʱ<C7B0><CAB1>
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcGetCurrTime(RTC_DATE_TIME* CurrTime);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>õ<EFBFBD>ǰʱ<C7B0><CAB1>
|
||||
* @param ʱ<><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬ΪҪ<CEAA><D2AA><EFBFBD>õ<EFBFBD>ʱ<EFBFBD><CAB1>ֵ
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcSetCurrTime(RTC_DATE_TIME* CurrTime);
|
||||
|
||||
/**
|
||||
* @brief Get days count in the month of the year
|
||||
* @param Year: the year number
|
||||
* @param Month: the month number
|
||||
* @return days count in the month of the year
|
||||
*/
|
||||
uint8_t RtcGetMonthDays(uint16_t Year, uint8_t Month);
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡij<C8A1><C4B3><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @param AlarmTime<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @param AlarmMode: <20><><EFBFBD><EFBFBD>ģʽָ<CABD>룬<EFBFBD><EBA3AC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
* @param ModeData: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ʱ<EFBFBD>䣨<EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͬʱ<CDAC><CAB1>Ч<EFBFBD><D0A7>
|
||||
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE<53><45>
|
||||
*/
|
||||
bool RtcGetAlarmTime(uint8_t AlarmID, uint8_t* AlarmMode, uint8_t* AlarmData, RTC_DATE_TIME* AlarmTime);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @param AlarmTime<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @param AlarmMode: <20><><EFBFBD><EFBFBD>ģʽ
|
||||
* @param ModeData: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ʱ<EFBFBD>䣨<EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͬʱ<CDAC><CAB1>Ч<EFBFBD><D0A7>
|
||||
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE<53><45>
|
||||
*/
|
||||
bool RtcSetAlarmTime(uint8_t AlarmID, uint8_t AlarmMode, uint8_t AlarmData, RTC_DATE_TIME* AlarmTime);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
|
||||
* @param AlarmStatus<75><73>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||
* @arg ALARM_STATUS_OPENED
|
||||
* @arg ALARM_STATUS_CLOSED
|
||||
* @arg ALARM_STATUS_UNUSED
|
||||
* @return <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE<53><45>
|
||||
*/
|
||||
bool RtcAlarmSetStatus(uint8_t AlarmID, uint8_t AlarmStatus);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD>ӵ<EFBFBD>״̬(<28><><EFBFBD><EFBFBD>/<2F>ر<EFBFBD>/δʹ<CEB4><CAB9>)<29><>
|
||||
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
||||
* ALARM_STATUS_OPENED
|
||||
* ALARM_STATUS_CLOSED
|
||||
* ALARM_STATUS_UNUSED
|
||||
*/
|
||||
uint8_t RtcGetAlarmStatus(uint8_t AlarmID);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>ˡ<EFBFBD>
|
||||
* @param NONE
|
||||
* @return <20><><EFBFBD><EFBFBD>0<EFBFBD><30>ʾû<CABE><C3BB><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>0<EFBFBD><30>ֵ<EFBFBD><D6B5>ʾ<EFBFBD><CABE>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>
|
||||
*/
|
||||
uint8_t RtcCheckAlarmFlag(void);
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
||||
* @param NONE
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcAlarmIntClear(void);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ӵ<EFBFBD>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><F3A3ACB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param NONE
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcAlarmArrivedProcess(void);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תũ<D7AA><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param DateTime:<3A><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param LunarDate:ũ<><C5A9>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @return NONE
|
||||
*/
|
||||
void SolarToLunar(RTC_DATE_TIME* DateTime, RTC_LUNAR_DATE* LunarDate);
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡũ<C8A1><C5A9><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param Year:ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD>0-9, <20>ֱ<EFBFBD><D6B1><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>: {"<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>"}
|
||||
*/
|
||||
uint8_t GetHeavenlyStem(uint16_t Year);
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡũ<C8A1><C5A9><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>֧
|
||||
* @param Year:ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD>0-11, <20>ֱ<EFBFBD><D6B1><EFBFBD>Ӧ<EFBFBD><D3A6>֧: {"<22><>", "<22><>", "<22><>", "î", "<22><>", "<22><>", "<22><>", "δ", "<22><>", "<22><>", "<22><>", "<22><>"}
|
||||
* <20>ֱ<EFBFBD><D6B1><EFBFBD>Ӧ<EFBFBD><D3A6>Ф: {"<22><>", "ţ", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>"}
|
||||
*/
|
||||
uint8_t GetEarthlyBranch(uint16_t Year);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif//__cplusplus
|
||||
|
||||
#endif
|
||||
/**
|
||||
*****************************************************************************
|
||||
* @file rtc.h
|
||||
* @author Yancy
|
||||
* @version V1.0.0
|
||||
* @date 19-June-2013
|
||||
* @brief rtc module driver header file
|
||||
* change log:
|
||||
* Modify by Sam -20140624
|
||||
*****************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© COPYRIGHT 2013 MVSilicon </center></h2>
|
||||
*/
|
||||
|
||||
#ifndef __RTC_H__
|
||||
#define __RTC_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif//__cplusplus
|
||||
|
||||
#include "type.h"
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>õ<EFBFBD>memory<72>ֽ<EFBFBD><D6BD><EFBFBD>,<2C>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾݴ<C9BE><DDB4>Լ<EFBFBD><D4BC><EFBFBD>Ҫ֧<D2AA>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>memory<72>ռ<EFBFBD>
|
||||
*/
|
||||
#define MEM_SIZE_PER_ALARM 6
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ֧<CAB1><D6A7>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
#define MAX_ALARM_NUM 2
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
||||
*/
|
||||
#define ALARM_STATUS_OPENED 0x01 /**< <20><><EFBFBD><EFBFBD>״̬ */
|
||||
#define ALARM_STATUS_CLOSED 0x02 /**< <20>ر<EFBFBD>״̬ */
|
||||
#define ALARM_STATUS_UNUSED 0x03 /**< δʹ<CEB4><CAB9>״̬ */
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
typedef enum _RTC_ALARM_MODE
|
||||
{
|
||||
ALARM_MODE_ONCE_ONLY = 1, /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_PER_DAY, /**< ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_PER_WEEK, /**< ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_WORKDAY, /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_USER_DEFINED, /**< <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
ALARM_MODE_MAX,
|
||||
} RTC_ALARM_MODE;
|
||||
|
||||
|
||||
#pragma pack(1) /*Ensure this structure is byte aligned, and not use padding bytes */
|
||||
typedef struct _ALARM_INFO
|
||||
{
|
||||
uint32_t AlarmTimeAsSeconds;
|
||||
uint8_t AlarmStatus : 2;
|
||||
uint8_t AlarmMode : 4;
|
||||
uint8_t AlarmData; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>bit0<74><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>죬bit6<74><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
} ALARM_TIME_INFO;
|
||||
#pragma pack()
|
||||
|
||||
|
||||
/**
|
||||
* <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD>嶨<EFBFBD><E5B6A8>
|
||||
*/
|
||||
typedef struct _RTC_DATE_TIME
|
||||
{
|
||||
uint16_t Year; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t Mon; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t Date; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t WDay; /**< <20><><EFBFBD>ںţ<DABA>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>1~6<><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>6 */
|
||||
uint8_t Hour; /**< Сʱ<D0A1><CAB1> */
|
||||
uint8_t Min; /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
uint8_t Sec; /**< <20><><EFBFBD><EFBFBD> */
|
||||
} RTC_DATE_TIME;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* ũ<><C5A9>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD>嶨<EFBFBD><E5B6A8>
|
||||
*/
|
||||
typedef struct _RTC_LUNAR_DATE
|
||||
{
|
||||
uint16_t Year; /**< ũ<><C5A9><EFBFBD><EFBFBD> */
|
||||
uint8_t Month; /**< ũ<><C5A9><EFBFBD><EFBFBD> */
|
||||
uint8_t Date; /**< ũ<><C5A9><EFBFBD><EFBFBD> */
|
||||
uint8_t MonthDays; /**< ũ<><C5A9>ÿ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>30 or 29*/
|
||||
bool IsLeapMonth; /**< <20>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>*/
|
||||
} RTC_LUNAR_DATE;
|
||||
|
||||
|
||||
/**
|
||||
* @brief RTCģ<43><C4A3><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
* @param AlarmWorkMem:<3A>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ӹ<EFBFBD><D3B9>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD>memory<72>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>
|
||||
* @param AlarmWorkMemSize<7A><65><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ӹ<EFBFBD><D3B9>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD>memory<72>ռ<EFBFBD><D5BC>Ĵ<EFBFBD>С<EFBFBD><D0A1>AlarmWorkMemSize<7A>ɿͻ<C9BF>ϣ<EFBFBD><CFA3>ͬʱ֧<CAB1>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>memory<72>ռ<EFBFBD><D5BC><EFBFBD>rtc.h<><68><EFBFBD>ɺ궨<C9BA><EAB6A8>MEM_SIZE_PER_ALARMȷ<4D><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>
|
||||
* 8<><38><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>ô<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀռ<C4BF><D5BC><EFBFBD>СӦΪMEM_SIZE_PER_ALARM*8<><38><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
|
||||
* #define MAX_ALARM_NUM 8 //<2F><><EFBFBD><EFBFBD>ͬʱ֧<CAB1><D6A7>8<EFBFBD><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* uint8_t AlarmWorkMem[MEM_SIZE_PER_ALARM * MAX_ALARM_NUM];
|
||||
* RtcInit(AlarmWorkMem, MEM_SIZE_PER_ALARM * MAX_ALARM_NUM);
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcInit(uint8_t* AlarmWorkMem, uint8_t AlarmWorkMemSize);
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
|
||||
* @param ʱ<><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD>ڷ<EFBFBD><DAB7>ص<EFBFBD>ǰʱ<C7B0><CAB1>
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcGetCurrTime(RTC_DATE_TIME* CurrTime);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>õ<EFBFBD>ǰʱ<C7B0><CAB1>
|
||||
* @param ʱ<><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬ΪҪ<CEAA><D2AA><EFBFBD>õ<EFBFBD>ʱ<EFBFBD><CAB1>ֵ
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcSetCurrTime(RTC_DATE_TIME* CurrTime);
|
||||
|
||||
/**
|
||||
* @brief Get days count in the month of the year
|
||||
* @param Year: the year number
|
||||
* @param Month: the month number
|
||||
* @return days count in the month of the year
|
||||
*/
|
||||
uint8_t RtcGetMonthDays(uint16_t Year, uint8_t Month);
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡij<C8A1><C4B3><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @param AlarmTime<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @param AlarmMode: <20><><EFBFBD><EFBFBD>ģʽָ<CABD>룬<EFBFBD><EBA3AC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
* @param ModeData: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ʱ<EFBFBD>䣨<EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͬʱ<CDAC><CAB1>Ч<EFBFBD><D0A7>
|
||||
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE<53><45>
|
||||
*/
|
||||
bool RtcGetAlarmTime(uint8_t AlarmID, uint8_t* AlarmMode, uint8_t* AlarmData, RTC_DATE_TIME* AlarmTime);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @param AlarmTime<6D><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* @param AlarmMode: <20><><EFBFBD><EFBFBD>ģʽ
|
||||
* @param ModeData: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>ʱ<EFBFBD>䣨<EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>ͬʱ<CDAC><CAB1>Ч<EFBFBD><D0A7>
|
||||
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE<53><45>
|
||||
*/
|
||||
bool RtcSetAlarmTime(uint8_t AlarmID, uint8_t AlarmMode, uint8_t AlarmData, RTC_DATE_TIME* AlarmTime);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
|
||||
* @param AlarmStatus<75><73>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||
* @arg ALARM_STATUS_OPENED
|
||||
* @arg ALARM_STATUS_CLOSED
|
||||
* @arg ALARM_STATUS_UNUSED
|
||||
* @return <20><><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<D0B3><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE<55><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FALSE<53><45>
|
||||
*/
|
||||
bool RtcAlarmSetStatus(uint8_t AlarmID, uint8_t AlarmStatus);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD>ӵ<EFBFBD>״̬(<28><><EFBFBD><EFBFBD>/<2F>ر<EFBFBD>/δʹ<CEB4><CAB9>)<29><>
|
||||
* @param AlarmID<49><44><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
||||
* ALARM_STATUS_OPENED
|
||||
* ALARM_STATUS_CLOSED
|
||||
* ALARM_STATUS_UNUSED
|
||||
*/
|
||||
uint8_t RtcGetAlarmStatus(uint8_t AlarmID);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>ˡ<EFBFBD>
|
||||
* @param NONE
|
||||
* @return <20><><EFBFBD><EFBFBD>0<EFBFBD><30>ʾû<CABE><C3BB><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD>0<EFBFBD><30>ֵ<EFBFBD><D6B5>ʾ<EFBFBD><CABE>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>
|
||||
*/
|
||||
uint8_t RtcCheckAlarmFlag(void);
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
|
||||
* @param NONE
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcAlarmIntClear(void);
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>ӵ<EFBFBD>ʱ<EFBFBD><CAB1>Ҫ<EFBFBD><D2AA><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><F3A3ACB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô˺<C3B4><CBBA><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param NONE
|
||||
* @return NONE
|
||||
*/
|
||||
void RtcAlarmArrivedProcess(void);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>תũ<D7AA><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param DateTime:<3A><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param LunarDate:ũ<><C5A9>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>룬<EFBFBD><EBA3AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @return NONE
|
||||
*/
|
||||
void SolarToLunar(RTC_DATE_TIME* DateTime, RTC_LUNAR_DATE* LunarDate);
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡũ<C8A1><C5A9><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param Year:ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD>0-9, <20>ֱ<EFBFBD><D6B1><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>: {"<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>"}
|
||||
*/
|
||||
uint8_t GetHeavenlyStem(uint16_t Year);
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡũ<C8A1><C5A9><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>֧
|
||||
* @param Year:ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @return <20><><EFBFBD><EFBFBD>0-11, <20>ֱ<EFBFBD><D6B1><EFBFBD>Ӧ<EFBFBD><D3A6>֧: {"<22><>", "<22><>", "<22><>", "î", "<22><>", "<22><>", "<22><>", "δ", "<22><>", "<22><>", "<22><>", "<22><>"}
|
||||
* <20>ֱ<EFBFBD><D6B1><EFBFBD>Ӧ<EFBFBD><D3A6>Ф: {"<22><>", "ţ", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>"}
|
||||
*/
|
||||
uint8_t GetEarthlyBranch(uint16_t Year);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif//__cplusplus
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user