/* ********************************************************************************************************* * IAR Development Kits * on the * * M451 * * Filename : rtc_wakeup.h * Version : V1.00 * Programmer(s) : Qian Xianghong ********************************************************************************************************* */ #ifndef USER_RTC_WAKEUP_PRESENT #define USER_RTC_WAKEUP_PRESENT #include "type.h" #pragma pack(push, 1) // 本结构从Nuvoton芯片库移植而来 typedef struct { uint32_t u32Year; /*!< Year value */ uint32_t u32Month; /*!< Month value */ uint32_t u32Day; /*!< Day value */ uint32_t u32DayOfWeek; /*!< Day of week value */ uint32_t u32Hour; /*!< Hour value */ uint32_t u32Minute; /*!< Minute value */ uint32_t u32Second; /*!< Second value */ uint32_t u32TimeScale; /*!< 12-Hour, 24-Hour */ uint32_t u32AmPm; /*!< Only Time Scale select 12-hr used */ } S_RTC_TIME_DATA_T; #define RTC_YEAR2000 2000 /*!< RTC Reference */ #define RTC_CLOCK_12 0 /*!< RTC 12 Hour */ #define RTC_CLOCK_24 1 /*!< RTC 24 Hour */ #define RTC_SUNDAY ((uint32_t) 0x00000000) /*!< Day of week is sunday */ // 获取日期时间:输出格式为Nuvoton芯片格式 void RTC_GetDateAndTime(S_RTC_TIME_DATA_T *sRTC); #pragma pack(pop) // RTC初始时间:固定为2016-01-01 00:00:00 #define INITIAL_YEAR 2016 // 定义工作模式 #define WORK_MODE_PROTECT 0 // 电池保护模式 #define WORK_MODE_CHARGE 1 // 充电提示模式 #define WORK_MODE_NORMAL 2 // 正常模式 // 电量极低标志 extern uint8_t bat_veryLow; // 休眠标识 extern volatile uint8_t Wakeup_Sleeping; // 是否睡眠模式 extern volatile uint8_t Wakeup_SleepMode; // 实际启动时间和INITIAL_YEAR相差的秒数(当GPS定位或GPRS连接基站以后设置) extern volatile uint32_t RTC_offsetSeconds; void Wakeup_Init(); void Wakeup_Open(); // 读取工作模式 uint8_t Wakeup_GetWorkMode(); // 设置工作模式 void Wakeup_SetWorkMode(); // 计算某月的天数 uint16_t get_month_days(uint16_t year, uint8_t month); // 计算从某年开始以来经过的秒数 uint32_t Calc_SecondsFromYear(uint16_t startYear, uint16_t year, uint8_t mon, uint8_t day, uint8_t hour, uint8_t min, uint8_t sec); // 设定下次闹钟唤醒时间 void Wakeup_SetAlarm(uint8_t charging); void Wakeup_SetAlarm_B(); // 将从INITIAL_YEAR开始的描述,转换成年月日 void Wakeup_CalcUTCTime(uint32_t totalSeconds, S_RTC_TIME_DATA_T *pRTC); // 检查是否进入掉电模式 void Wakeup_Powerdown(); // 立即进入休眠模式(库存模式:休眠、熄屏,只能通过按键唤醒) void Wakeup_SleepDown(); // 充电唤醒中断 void Vcc_Power_Handler(void); #endif