示例#1
0
文件: rtc.c 项目: xuxiuyao/PumpInsert
/*****************************************************************************
** Function name:		RTCInit
**
** Descriptions:		Initialize RTC timer
**
** parameters:			None
** Returned value:		None
** 
*****************************************************************************/
void RTCInit( void )
{
  g_uiDateTime_reload = 0;

  /* Enable CLOCK into RTC */
  SC->PCONP |= (1 << 9);

  /* If RTC is stopped, clear STOP bit. */
  if ( RTC->PWRCTRL & (0x1<<4) )
  {
	RTC->PWRCTRL |= (0x1<<4);	
  }
  
  /*--- Initialize registers ---*/    
  RTC->AMR = 0;
  RTC->CIIR = 0;
  RTC->CCR = 0;

  //NVIC_EnableIRQ(RTC_IRQn);

  RTC->CIIR = IMSEC;
    
  RTCStart();
  
  return;
}
/*****************************************************************************
**   Main Function  main()
******************************************************************************/
int main (void)
{ 
  /* SystemClockUpdate() updates the SystemFrequency variable */
  SystemClockUpdate();

  /* Initialize RTC module */
  RTCInit();

  local_time.RTC_Sec = 0;
  local_time.RTC_Min = 0;
  local_time.RTC_Hour = 0;
  local_time.RTC_Mday = 8;
  local_time.RTC_Wday = 3;
  local_time.RTC_Yday = 12;		/* current date 07/12/2006 */
  local_time.RTC_Mon = 7;
  local_time.RTC_Year = 2006;
  RTCSetTime( local_time );		/* Set local time */

  alarm_time.RTC_Sec = 0;
  alarm_time.RTC_Min = 0;
  alarm_time.RTC_Hour = 0;
  alarm_time.RTC_Mday = 1;
  alarm_time.RTC_Wday = 0;
  alarm_time.RTC_Yday = 1;		/* alarm date 01/01/2007 */
  alarm_time.RTC_Mon = 1;
  alarm_time.RTC_Year = 2007;
  RTCSetAlarm( alarm_time );		/* set alarm time */

  NVIC_EnableIRQ(RTC_IRQn);

  /* mask off alarm mask, turn on IMYEAR in the counter increment interrupt
  register */
  RTCSetAlarmMask(AMRSEC|AMRMIN|AMRHOUR|AMRDOM|AMRDOW|AMRDOY|AMRMON|AMRYEAR);
  LPC_RTC->CIIR = IMMIN | IMYEAR;
  /* 2007/01/01/00:00:00 is the alarm on */
    
  RTCStart();

  while (1) 
  {					/* Loop forever */
	current_time = RTCGetTime();
	if ( alarm_on != 0 )
	{
	  alarm_on = 0;
	  /* Get current time when alarm is on */
	  current_time = RTCGetTime();	
	}
  }

}
示例#3
0
文件: rtc.c 项目: xuxiuyao/PumpInsert
/*****************************************************************************
** Function name:		RTCSetTimeDefault
**
** Descriptions:		Setup RTC timer default
**
** parameters:			None
** Returned value:		None
** 
*****************************************************************************/
void RTCSetTimeDefault(void) 
{
    RTCStop();
  g_stTemp_time.RTC_Sec = 0;
  g_stTemp_time.RTC_Min = 0;
  g_stTemp_time.RTC_Hour = 0;
  g_stTemp_time.RTC_Mday = 25;
  //g_stTemp_time.RTC_Wday = 4;
  //g_stTemp_time.RTC_Yday = 0;		/* Default date 2011/08/25 */
  g_stTemp_time.RTC_Mon = 8;
  g_stTemp_time.RTC_Year = 2011;
  RTCSetTime( g_stTemp_time );		/* Set local time */
  RTCStart();
  return;
}
示例#4
0
文件: main.c 项目: ClockSelect/myevic
//=========================================================================
// Real-Time Clock
//-------------------------------------------------------------------------
__myevic__ void InitRTC()
{
	if ( !gFlags.noclock )
	{
		gFlags.has_x32 = !dfStatus.x32off;
		RTCStart( 0 );
	}

	if ( gFlags.has_x32 )
	{
		// Disable Light Sleep mode.
		dfStatus.lsloff = 1;
		UpdateDFTimer = 1;
	}
	else if ( !dfStatus.x32off )
	{
		// Disable X32
		dfStatus.x32off = 1;
		// Enable Light Sleep mode.
		dfStatus.lsloff = 0;
		UpdateDFTimer = 1;
	}

	gFlags.rtcinit = 1;

	time_t vvbase;

	vvbase = RTCReadRegister( RTCSPARE_VV_BASE );

	if ( ( vvbase == 0 ) || ( vvbase % 86400 ) )
	{
		vvbase = RTCGetEpoch( 0 );
		vvbase -= vvbase % 86400;
		RTCWriteRegister( RTCSPARE_VV_BASE, vvbase );
		RTCWriteRegister( RTCSPARE_VV_MJOULES, 0 );
	}
	else
	{
		MilliJoules = RTCReadRegister( RTCSPARE_VV_MJOULES );
	}
}
示例#5
0
文件: xrtctest.c 项目: 0xc0170/cox
//*****************************************************************************
//
//! \brief xrtc004 test for rtc interrupt.
//!
//! \return None.
//
//*****************************************************************************
static void xrtc004Execute_Int()
{  
    RTCTimeInit();  
    
    tTime2.ulSecond = 40;     
    
    tTime2.ulMinute = 20; 
    
    tTime2.ulHour = 17; 
    
    tTime2.ulMDay = 11;  
    
    tTime2.ulMonth = 8;   
    
    tTime2.ulYear = 2011;    
    
    tTime2.ulWDay = 4;   

    tTime2.ulFormat = RTC_TIME_24H;
    
    //
    // Writes current time to corresponding register.
    //
    RTCTimeWrite(&tTime2, ulTimeAlarm[0]);
      
    //
    // Alarm interrupt after 10 seconds.
    //
    tTime2.ulSecond +=10;
    
    //
    // Writes current time to corresponding register.
    //
    RTCTimeWrite(&tTime2, ulTimeAlarm[1]);
    
    for(ulj = 0; ulj < 0xffff; ulj ++);
      
    xRTCTimeRead(&tTime1, ulTimeAlarm[1]);
    
    TestAssert(2011 == tTime1.ulYear && 8 == tTime1.ulMonth
          && 11 ==  tTime1.ulMDay && RTC_TIME_24H == tTime1.ulFormat 
          && 17 == tTime1.ulHour  && 20 == tTime1.ulMinute 
          && 50 == tTime1.ulSecond,
             "xrtc API \" RTCTimeWrite()\" or \"xRTCTimeRead()\" error!");

    //
    // Enables alarm interrupt.
    //
    RTCIntCallbackInit(RTC_INT_ALARM, xRTCACallback);
    RTCIntEnable(RTC_INT_ALARM);
    xIntEnable(INT_RTCA);
    xIntMasterEnable();
    
    RTCStart();
    
    TestAssertQBreak("a","Alarm interrupt failed!", 0xffffffff);
    
    for(ulj = 0; ulj < 0xffff; ulj ++);
       
    TestAssert(2011 == tTime1.ulYear && 8 == tTime1.ulMonth
           && 11 ==  tTime1.ulMDay && RTC_TIME_24H == tTime1.ulFormat 
           && 17 == tTime1.ulHour && 20 == tTime1.ulMinute 
           && 50 == tTime1.ulSecond ,
            "xrtc API \" RTCTimeWrite()\" or \"xRTCTimeRead()\" error!"); 
    
    //
    // Disables alarm interrupt.
    //
    RTCIntDisable(RTC_INT_ALARM);
   
    //
    // Enables seconds interrupt.
    //
    RTCIntCallbackInit(RTC_INT_TIME_TICK, xRTCSCallback);
    RTCIntEnable(RTC_INT_TIME_TICK);
    xIntEnable(INT_RTCS);
    
    RTCStart();
    
    TestAssertQBreak("b","Tick interrupt failed!",0xffffffff);
    
    //
    // Disables seconds interrupt.
    //
    RTCIntDisable(RTC_INT_TIME_TICK);   
}
/*****************************************************************************
**   Main Function  rtc_main()
******************************************************************************/
void rtc_main (void)
{ 
  /* SystemClockUpdate() updates the SystemFrequency variable */
  SystemCoreClockUpdate();

  /* Initialize RTC module */
  RTCInit();
  GUIDEMO_ShowIntro("Real Time Clock",
                    "Showing"
                    "\nReal Time Clock"
                    "\nBy Siddharth Kaul");
	GUI_Clear();
	GUI_SetBkColor(GUI_BLUE);
	GUI_SetColor(GUI_LIGHTRED);
	GUI_Clear();
	GUI_SetFont(&GUI_Font24B_1);
  local_time.RTC_Sec = 0;
  local_time.RTC_Min = 0;
  local_time.RTC_Hour = 0;
  local_time.RTC_Mday = 8;
  local_time.RTC_Wday = 3;
  local_time.RTC_Yday = 12;		/* current date 07/12/2006 */
  local_time.RTC_Mon = 7;
  local_time.RTC_Year = 2006;
  RTCSetTime( local_time );		/* Set local time */

  alarm_time.RTC_Sec = 0;
  alarm_time.RTC_Min = 0;
  alarm_time.RTC_Hour = 0;
  alarm_time.RTC_Mday = 1;
  alarm_time.RTC_Wday = 0;
  alarm_time.RTC_Yday = 1;		/* alarm date 01/01/2007 */
  alarm_time.RTC_Mon = 1;
  alarm_time.RTC_Year = 2007;
  RTCSetAlarm( alarm_time );		/* set alarm time */

  NVIC_EnableIRQ(RTC_IRQn);

  /* mask off alarm mask, turn on IMYEAR in the counter increment interrupt
  register */
  RTCSetAlarmMask(AMRSEC|AMRMIN|AMRHOUR|AMRDOM|AMRDOW|AMRDOY|AMRMON|AMRYEAR);
  LPC_RTC->CIIR = IMMIN | IMYEAR;
  /* 2007/01/01/00:00:00 is the alarm on */
    
  RTCStart();

  while (1) 
  {					/* Loop forever */
	current_time = RTCGetTime();
	{
	  	char rtc_sec,rtc_min,rtc_hour;
		rtc_sec = current_time.RTC_Sec;
		rtc_min = current_time.RTC_Min;
		rtc_hour = current_time.RTC_Hour;
		GUI_DispCharAt(rtc_sec, 10, 10);
	  	GUI_DispCharAt(rtc_min, 14, 20);
	  	GUI_DispCharAt(rtc_hour, 18, 30);
	 }	
	}
  

}