// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // File name : rtc_drv.h // Version : V0.1 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #ifndef RTC_DRV_H_ #define RTC_DRV_H_ #include "memmap.h" #include "rtc_reg.h" #define RTC ((RTC_TypeDef *)(PMURTC_BASE_ADDR)) #define RTC_SEL_MASK (0x03 << 8) #define RTC_LOW_LEVEL_INT (0x00 << 8) #define RTC_RISING_EDGE_INT (0x01 << 8) #define RTC_FALLING_EDGE_INT (0x02 << 8) #define RTC_RISING_FALLING_EDGE_INT (0x03 << 8) #define DAY_ALARM 0x01 #define HOUR_ALARM 0x02 #define MINUTE_ALARM 0x03 #define SECOND_ALARM 0x04 #define ALL_ALARM 0x05 #define IS_RTC_ALARM_MOD(MOD) (((MOD) == DAY_ALARM) || \ ((MOD) == HOUR_ALARM) || \ ((MOD) == MINUTE_ALARM) || \ ((MOD) == SECOND_ALARM) || \ ((MOD) == ALL_ALARM)) #define Day_intf 0x00400000 #define Hou_intf 0x00200000 #define Min_intf 0x00100000 #define Sec_intf 0x00080000 #define Ala_intf 0x00040000 #define CLK_1KHz_intf 0x00020000 #define CLK_32KHz_intf 0x00010000 typedef struct _tm{ // date and time components UINT16 day; UINT8 hour; UINT8 minute; UINT8 second; }tm; extern UINT32 g_rtc_int_sta; /******************************************************************************* * Function Name : RTC_ISR * Description : RTC中断处理 * Input : None * * Output : None * Return : None ******************************************************************************/ extern void RTC_ISR(void); /******************************************************************************* * Function Name : RTC_Init * Description : RTC初始化 * Input : None * * Output : None * Return : None ******************************************************************************/ extern void RTC_Init(UINT8 clk_sel); /******************************************************************************* * Function Name : RTC_SetTime * Description : 设置RTC初值 * Input : - t:tm结构体 * t->day:设置RTC的day值 * t->hour:设置RTC的hour值 * t->minute:设置RTC的minute值 * t->second:设置RTC的second值 * * Output : None * Return : None ******************************************************************************/ extern void RTC_SetTime(tm t); /******************************************************************************* * Function Name : RTC_SetAlarm * Description : 设置RTC初值 * Input : - t:tm结构体,设置alarm计数器的值 * - AlarmMod:alarm的模式 * DAY_ALARM:day报警 * HOUR_ALARM:hour报警 * MINUTE_ALARM:minute报警 * SECOND_ALARM:second报警 * ALL_ALARM:day、hour、minute、second报警 * * Output : None * Return : None ******************************************************************************/ extern void RTC_SetAlarm(tm t, UINT8 AlarmMod); /******************************************************************************* * Function Name : RTC_GetTime * Description : 读取RTC计数器值 * Input : None * * Output : - t:tm结构体, * t->day:读取的RTC的day值 * t->hour:读取的RTC的hour值 * t->minute:读取的RTC的minute值 * t->second:读取的RTC的second值 * Return : None ******************************************************************************/ extern void RTC_GetTime(tm *t); #endif /* RTC_DRV_H_ */