コード例 #1
0
ファイル: main.c プロジェクト: chalot/360_MBoard
int main(void)
{
		TIME  time;
		
		 /*时钟初始化*/
		CLK_Config();
			
		/*初始化电源控制*/
		GPIO_DeInit(GPIOD); 
		GPIO_Init(GPIOD,GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST);
		GPIO_DeInit(GPIOC); 
		GPIO_Init(GPIOC,GPIO_PIN_1,GPIO_MODE_OUT_PP_LOW_FAST);	
	
		/*上电,3.3V/12V*/
		VDD3V3_ON();
		VDD12_ON();
	
		RTC_Init();


		while (1)
		{
			RTC_ReadDate(&time);

		  
		}
			

	


	return 0;
}
コード例 #2
0
ファイル: rtc_fm3.c プロジェクト: bearxiong99/XXOO_000
/*!
 ******************************************************************************
 ** \brief RTC interrupt handler
 **
 ** \param void
 **         
 ** \return None
 **
 ******************************************************************************
 */
void RTC_IntHandler(void)
{
    RTC_TimeInfoT CurTime;
    RTC_DateInfoT CurDate;
    unsigned char alarm_invalid=0;
    if(FM3_RTC->WTCR1_f.INTALI) /* Alarm occured? */
    {
        FM3_RTC->WTCR1_f.INTALI = 0;
        RTC_ReadDate(&CurDate);
        RTC_ReadTime(&CurTime);
        if(FM3_RTC->WTCR1_f.MIEN)
        {
            if(FM3_RTC->ALMIR != DECtoBCD(CurTime.Min)) alarm_invalid = 1;
        }
        if(FM3_RTC->WTCR1_f.HEN)
        {
            if(FM3_RTC->ALHR != DECtoBCD(CurTime.Hour)) alarm_invalid = 1;
        }
        if(FM3_RTC->WTCR1_f.DEN)
        {
            if(FM3_RTC->ALDR != DECtoBCD(CurDate.Date)) alarm_invalid = 1;
        }
        if(FM3_RTC->WTCR1_f.MOEN)
        {
            if(FM3_RTC->ALMOR != DECtoBCD(CurDate.Mon)) alarm_invalid = 1;
        }
        if(FM3_RTC->WTCR1_f.YEN)
        {
            if(FM3_RTC->ALYR != DECtoBCD(CurDate.Year)) alarm_invalid = 1;
        }
        
        if(alarm_invalid == 0)
        {
            s_RTCAlarmIntCallback();
            
            if(s_AlarmMode == RTC_ALARM_ONCE)
            {
                FM3_RTC->WTCR1_f.INTALIE = 0; /* disable alarm interrupt */
                /* clear alarm register */
                FM3_RTC->ALMIR = 0;
                FM3_RTC->ALHR = 0;
                FM3_RTC->ALDR = 0;
                FM3_RTC->ALMOR = 0;
                FM3_RTC->ALYR = 0;
                FM3_RTC->WTCR1_f.MIEN = 0;
                FM3_RTC->WTCR1_f.HEN =  0;
                FM3_RTC->WTCR1_f.DEN = 0;
                FM3_RTC->WTCR1_f.MOEN = 0;
                FM3_RTC->WTCR1_f.YEN = 0;
            }
        }
    }
    if(FM3_RTC->WTCR1_f.INTTMI && FM3_RTC->WTCR1_f.INTTMIE)
    {
        FM3_RTC->WTCR1_f.INTTMI = 0;
        s_RTCTimerIntCallback();
        
    }
    if(FM3_RTC->WTCR1_f.INTSSI && FM3_RTC->WTCR1_f.INTSSIE) /* 0.5s int occur? */
    {
        FM3_RTC->WTCR1_f.INTSSI = 0;
        s_RTCSubSecIntCallback();
    }
    if(FM3_RTC->WTCR1_f.INTSI && FM3_RTC->WTCR1_f.INTSIE) /* 1s int occur? */
    {
        FM3_RTC->WTCR1_f.INTSI = 0;
        s_RTCSecIntCallback();
    }
    if(FM3_RTC->WTCR1_f.INTMI && FM3_RTC->WTCR1_f.INTMIE) /* 1min int occur? */
    {
        FM3_RTC->WTCR1_f.INTMI = 0;
        s_RTCMinIntCallback();
    }
    if(FM3_RTC->WTCR1_f.INTHI && FM3_RTC->WTCR1_f.INTHIE) /* 1hour int occur? */
    {
        FM3_RTC->WTCR1_f.INTHI = 0;
        s_RTCHourIntCallback();
    }
    /* clear all interrupt flag */
    FM3_RTC->WTCR1 &= ~(0x00FF0000);
}