/******************************************************************************* * @Copyright (c) :(C)2020, Qingdao ieslab Co., Ltd * @FileName :hc32_rtcc_driver.h * @Author :Kv-L * @Version :V1.0 * @Date :2020年7月1日 16:06:02 * @Description :the function of the entity of GP22Gas_rtcc_driver.h *******************************************************************************/ #ifndef __UWater_RTCC_DRIVER_H #define __UWater_RTCC_DRIVER_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "ddl.h" #include "type.h" #include "time.h" #define difftime(t1, t0) ((double)((time_t)(t1)-(time_t)(t0))) #define RTC_TIMER_EN 1 /*RTCC定时器当量选择*/ #define RTC_TIMER_RPT_SEC 1 //1s当量 1:选择 0:不选择 #define RTC_TIMER_RPT_MIN 0 //1min #define RTC_TIMER_RPT_HOUR 0 //1hour #define RTC_TIMER_RPT_DAY 0 //1day #define RTC_TIMER_RPT_WEEK 0 //1week #define RTC_TIMER_RPT_MON 0 //1mon #define RTC_TIM_MAX_NUM 15 #define RTCC_TIMER_BAT_NUM 0 //3s #define RTCC_TIMER_LCD_NUM 1 //60s #define RTCC_TIMER_LCD_METSTATUES 2 //1s #define RTCC_TIMER_GP30_NUM 3 //小时 //#define TIMER_RTCC_DELAY_UPLOAD 4 //1s #define TIMER_DATE_SAVE_MONITOR 5 //1min------------------------ #define TIMER_RTCC_TEST_SELF 6 #define RTCC_MIJI_WAIT_TIME 7 #define RTCC_GP30_INTERRUPT_TIME 8 #define RTCC_TOF_CALIBERATE_TIME 9 // 反算单程时间校准超时防护 #define RTCC_CARD_KEY_TIME 10 #define RTCC_CARD_SEARCH_TIME 11 #define FLOW_DETECT_TIME 12// 5s---流速度检测定时 #define RTCC_TIMER_CLKTRIM_TOTAL 13 #define RTCC_BLE_ACTIVE_TIME 14 typedef union { struct { u8 year; u8 month; u8 day; u8 weekday; u8 hour; u8 minute; u8 second; } s; //日历和时间结构体 u8 b[7]; // BYTE access } DateTime; typedef union { struct { u8 year; u8 month; u8 day; u8 hour; u8 minute; u8 second; } s; //日历和时间结构体 u8 b[6]; // BYTE access } DateTime_noweek; typedef union { struct { u8 year; u8 month; u8 day; u8 weekday; } s; //日历结构体 u8 b[4]; // BYTE access } Date; typedef union { struct { u8 hour; u8 minute; u8 second; } s; //时间结构体 u8 b[3]; // BYTE access } Time; #define RTCC_TIMEOUT_US 1000 //timeout time 1000us u8 RtccInit(void); void RtccSetDateTime(DateTime *pDT); u8 RtccGetDateTime(DateTime *pDT); void RtccGetDate(Date *pD); void RtccGetTime(Time *pT); void RtccAdjustDateTime(u8 adjust, u32 sec); void RtccSetTimer(u8 rtcc_timenum, u16 rtcc_timespan); u16 RtccCheckTimer(u8 rtcc_timenum); void RtccSetAlrm(DateTime *pDT); //void RtccSetAlrm(u8 count, u32 cycle); void RtccGetAlrm(DateTime *pDT); u8 RtccCheckMsg(void); void RtccClearMsg(u8 bit); //void RtccGetAlrmTimeAfter(DateTime *pDT); u8 Rtcc_Check_DateTime(DateTime *pDT); s32 RtcccalculateDiffTime(const DateTime *newpD, const DateTime *oldpD); void RtccAutoWakeupTimerEnable(u16 span_ms); void RtccAutoWakeupTimerDisable(void); u8 RtccWakeupCheckMsg(void); void RtccWakeupClearMsg(void); u8 RtccIfSleep(void); void RtccPreSleep(void); void RtccWakeSleep(void); long RtccCalculateDiffTime(const DateTime *newpD, const DateTime *oldpD); time_t get_mktime (DateTime *time_GMT);//标准时间准换为绝对秒数 time_t get_mktime_noweek (DateTime_noweek *time_GMT);//标准时间准换为绝对秒数 u8 RTC_ClkSource(void); #if RTC_TIMER_EN #if (1 != (RTC_TIMER_RPT_SEC + RTC_TIMER_RPT_MIN + RTC_TIMER_RPT_HOUR + RTC_TIMER_RPT_DAY + RTC_TIMER_RPT_WEEK + RTC_TIMER_RPT_MON)) #error "Rtcc timer config error!" #endif #endif #ifdef __cplusplus } #endif #endif /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/