Example #1
0
/**
  * @brief  Returns the time entered by user, using Hyperterminal.
  * @param  None
  * @retval Current time RTC counter value
  */
uint32_t Time_Regulate(void)
{
  uint32_t Tmp_HH = 0xFF, Tmp_MM = 0xFF, Tmp_SS = 0xFF;

  printf("\r\n==============Time Settings=====================================");
  printf("\r\n  Please Set Hours");

  while (Tmp_HH == 0xFF)
  {
    Tmp_HH = USART_Scanf(23);
  }
  printf(":  %d", Tmp_HH);
  printf("\r\n  Please Set Minutes");
  while (Tmp_MM == 0xFF)
  {
    Tmp_MM = USART_Scanf(59);
  }
  printf(":  %d", Tmp_MM);
  printf("\r\n  Please Set Seconds");
  while (Tmp_SS == 0xFF)
  {
    Tmp_SS = USART_Scanf(59);
  }
  printf(":  %d", Tmp_SS);

  /* Return the value to store in RTC counter register */
  return((Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS));
}
Example #2
0
File: rtc.c Project: vcheung/STM32
/*
 * 函数名:Time_Regulate
 * 描述  :返回用户在超级终端中输入的时间值,并将值储存在
 *         RTC 计数寄存器中。
 * 输入  :无
 * 输出  :用户在超级终端中输入的时间值,单位为 s
 * 调用  :被Time_Adjust调用,调用USART_Scanf
 */
uint32_t Time_Regulate(void)
{
	uint32_t Tmp_HH = 0xFF, Tmp_MM = 0xFF, Tmp_SS = 0xFF;
	
	printf("\r\n==============Time Settings=====================================");
	printf("\r\n  Please Set Hours");
	
	while (Tmp_HH == 0xFF)
	{
		/* 将串口接受的数据给Tmp_HH ,23便是传递给USART_Scanf(value)中的形参value的 */
		Tmp_HH = USART_Scanf(23);
	}
	printf(":  %d", Tmp_HH);
	printf("\r\n  Please Set Minutes");
	while (Tmp_MM == 0xFF)
	{
		Tmp_MM = USART_Scanf(59);
	}
	printf(":  %d", Tmp_MM);
	printf("\r\n  Please Set Seconds");
	while (Tmp_SS == 0xFF)
	{
		Tmp_SS = USART_Scanf(59);
	}
	printf(":  %d", Tmp_SS);
	
	/* Return the value to store in RTC counter register
	 * 将时分秒转换成秒放入RTC计数器中 */
	return((Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS));
}
Example #3
0
void serialShellGetCountdown(uint32_t *val)
{
  uint32_t days = 0xFFF;
  printf("\r\n==============Countdown Settings================================");
  printf("\r\n  Please set number of days to countdown (000..999)");
  printf("\r\n");
  while (days == 0xFFF)
  {
    days = USART_Scanf(3, 0, 999);
  }
  printf(":  %d", days);
  printf("\r\n");
  *val = days;
}
Example #4
0
 /**
  * @file   Time_Regulate
  * @brief  RTC校准
  * @param  无
  * @retval 无
  */
void Time_Regulate(void)
{
  struct tm time;
  memset(&time, 0 , sizeof(time) );	/* 清空结构体 */
  printf("=======================Time Settings==========================\r\n");
  printf("Please Set Years between 1970 to 2037\r\n");
	
  while ( time.tm_year>2037 || time.tm_year<1970)
  {   
    time.tm_year = USART_Scanf(1970,2037,4);
  }
  printf("Set Years:  %d\r\n", time.tm_year);

  printf("Please Set Months between 01 to 12\r\n");
  while (time.tm_mon >12 || time.tm_mon < 1 )
  {
    time.tm_mon= USART_Scanf(1,12,2)-1;
  }
  printf("Set Months:  %d\r\n", time.tm_mon);

  printf("Please Set Days between 01 to 31\r\n");
  while (time.tm_mday >31 ||time.tm_mday <1 )
  {
    time.tm_mday = USART_Scanf(1,31,2);
  }
  printf("Set Days:  %d\r\n", time.tm_mday);

  printf("Please Set Hours between 01 to 23\r\n");
  while (time.tm_hour >23 ||time.tm_hour <1 )
  {
    time.tm_hour = USART_Scanf(1,23,2);
  }
  printf("Set Hours:  %d\r\n", time.tm_hour);

  printf("Please Set Minutes between 01 to 59\r\n");
  while (time.tm_min >59 || time.tm_min <1 )
  {
    time.tm_min = USART_Scanf(1,59,2);
  }
  printf("Set Minutes:  %d\r\n", time.tm_min);

  printf("Please Set Seconds between 01 to 59\r\n");
  while (time.tm_sec >59 || time.tm_sec <1 )
  {
    time.tm_sec = USART_Scanf(1,59,2);
  }
  printf("Set Seconds:  %d\r\n", time.tm_sec);
  /* Return the value to store in RTC counter register */
  Time_SetCalendarTime(time);  
}
/**
  * @brief  Returns the time entered by user, using Hyperterminal.
  * @param  None
  * @retval None
  */
void RTC_TimeRegulate(void)
{
    uint32_t tmp_hh = 0xFF, tmp_mm = 0xFF, tmp_ss = 0xFF;

    printf("\n\r==============Time Settings=====================================\n\r");
    RTC_TimeStructure.RTC_H12     = RTC_H12_AM;
    printf("  Please Set Hours\n\r");
    while (tmp_hh == 0xFF)
    {
        tmp_hh = USART_Scanf(0, 23);
        RTC_TimeStructure.RTC_Hours = tmp_hh;
    }
    printf(":  %0.2d\n\r", tmp_hh);

    printf("  Please Set Minutes\n\r");
    while (tmp_mm == 0xFF)
    {
        tmp_mm = USART_Scanf(0, 59);
        RTC_TimeStructure.RTC_Minutes = tmp_mm;
    }
    printf(":  %0.2d\n\r", tmp_mm);

    printf("  Please Set Seconds\n\r");
    while (tmp_ss == 0xFF)
    {
        tmp_ss = USART_Scanf(0, 59);
        RTC_TimeStructure.RTC_Seconds = tmp_ss;
    }
    printf(":  %0.2d\n\r", tmp_ss);

    /* Configure the RTC time register */
    if(RTC_SetTime(RTC_Format_BIN, &RTC_TimeStructure) == ERROR)
    {
        printf("\n\r>> !! RTC Set Time failed. !! <<\n\r");
    }
    else
    {
        printf("\n\r>> !! RTC Set Time success. !! <<\n\r");
        RTC_TimeShow();
        /* Indicator for the RTC configuration */
        RTC_WriteBackupRegister(RTC_BKP_DR0, 0x32F2);
    }

    tmp_hh = 0xFF;
    tmp_mm = 0xFF;
    tmp_ss = 0xFF;

    printf("\n\r==============Date Settings=====================================\n\r");

    printf("  Please Set WeekDay (01-07)\n\r");
    while (tmp_hh == 0xFF)
    {
        tmp_hh = USART_Scanf(1, 7);
        RTC_DateStructure.RTC_WeekDay = tmp_hh;
    }
    printf(":  %0.2d\n\r", tmp_hh);
    tmp_hh = 0xFF;
    printf("  Please Set Date (01-31)\n\r");
    while (tmp_hh == 0xFF)
    {
        tmp_hh = USART_Scanf(1, 31);
        RTC_DateStructure.RTC_Date = tmp_hh;
    }
    printf(":  %0.2d\n\r", tmp_hh);

    printf("  Please Set Month (01-12)\n\r");
    while (tmp_mm == 0xFF)
    {
        tmp_mm = USART_Scanf(1, 12);
        RTC_DateStructure.RTC_Month = tmp_mm;
    }
    printf(":  %0.2d\n\r", tmp_mm);

    printf("  Please Set Year (00-99)\n\r");
    while (tmp_ss == 0xFF)
    {
        tmp_ss = USART_Scanf(0, 99);
        RTC_DateStructure.RTC_Year = tmp_ss;
    }
    printf(":  %0.2d\n\r", tmp_ss);

    /* Configure the RTC date register */
    if(RTC_SetDate(RTC_Format_BIN, &RTC_DateStructure) == ERROR)
    {
        printf("\n\r>> !! RTC Set Date failed. !! <<\n\r");
    }
    else
    {
        printf("\n\r>> !! RTC Set Date success. !! <<\n\r");
        RTC_DateShow();
        /* Indicator for the RTC configuration */
        RTC_WriteBackupRegister(RTC_BKP_DR0, 0x32F2);
    }

}
Example #6
0
/**
  * @brief  Returns the time entered by user, using Hyperterminal.
  * @param  None
  * @retval None
  */
void RTC_TimeRegulate(void)
{
  uint32_t tmp_hh = 0xFF, tmp_mm = 0xFF, tmp_ss = 0xFF;

  printf("\n\r==============Time Settings=====================================\n\r");
  RTC_TimeStructure.RTC_H12     = RTC_H12_AM;
  printf("  Please Set Hours:\n\r");
  while (tmp_hh == 0xFF)
  {
    tmp_hh = USART_Scanf(23);
    RTC_TimeStructure.RTC_Hours = tmp_hh;
  }
  printf("  %u\n\r", tmp_hh);
  
  printf("  Please Set Minutes:\n\r");
  while (tmp_mm == 0xFF)
  {
    tmp_mm = USART_Scanf(59);
    RTC_TimeStructure.RTC_Minutes = tmp_mm;
  }
  printf("  %0.2d\n\r", tmp_mm);
  
  printf("  Please Set Seconds:\n\r");
  while (tmp_ss == 0xFF)
  {
    tmp_ss = USART_Scanf(59);
    RTC_TimeStructure.RTC_Seconds = tmp_ss;
  }
  printf("  %0.2d\n\r", tmp_ss);

  /* Configure the RTC time register */
  if(RTC_SetTime(RTC_Format_BIN, &RTC_TimeStructure) == ERROR)
  {
    printf("\n\r>> !! RTC Set Time failed. !! <<\n\r");
  } 
  else
  {
    printf("\n\r>> !! RTC Set Time success. !! <<\n\r");
    RTC_TimeShow();
    /* Indicator for the RTC configuration */
    RTC_WriteBackupRegister(RTC_BKP_DR0, 0x32F2);
  }

  tmp_hh = 0xFF;
  tmp_mm = 0xFF;
  tmp_ss = 0xFF;

  /* Disable the Alarm A */
  RTC_AlarmCmd(RTC_Alarm_A, DISABLE);

  printf("\n\r==============Alarm A Settings=====================================\n\r");
  RTC_AlarmStructure.RTC_AlarmTime.RTC_H12 = RTC_H12_AM;
  printf("  Please Set Alarm Hours:\n\r");
  while (tmp_hh == 0xFF)
  {
    tmp_hh = USART_Scanf(23);
    RTC_AlarmStructure.RTC_AlarmTime.RTC_Hours = tmp_hh;
  }
  printf("  %0.2d\n\r", tmp_hh);
  
  printf("  Please Set Alarm Minutes:\n\r");
  while (tmp_mm == 0xFF)
  {
    tmp_mm = USART_Scanf(59);
    RTC_AlarmStructure.RTC_AlarmTime.RTC_Minutes = tmp_mm;
  }
  printf("  %0.2d\n\r", tmp_mm);
  
  printf("  Please Set Alarm Seconds:\n\r");
  while (tmp_ss == 0xFF)
  {
    tmp_ss = USART_Scanf(59);
    RTC_AlarmStructure.RTC_AlarmTime.RTC_Seconds = tmp_ss;
  }
  printf("  %0.2d", tmp_ss);

  /* Set the Alarm A */
  RTC_AlarmStructure.RTC_AlarmDateWeekDay = RTC_Weekday_Monday;
  RTC_AlarmStructure.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date;
  RTC_AlarmStructure.RTC_AlarmMask = RTC_AlarmMask_DateWeekDay;

  /* Configure the RTC Alarm A register */
  RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStructure);
  printf("\n\r>> !! RTC Set Alarm success. !! <<\n\r");
  RTC_AlarmShow();

  /* Enable the RTC Alarm A Interrupt */
  RTC_ITConfig(RTC_IT_ALRA, ENABLE);
   
  /* Enable the alarm  A */
  RTC_AlarmCmd(RTC_Alarm_A, ENABLE);
}
Example #7
0
/*
 * 函数名:Time_Regulate
 * 描述  :返回用户在超级终端中输入的时间值,并将值储存在
 *         RTC 计数寄存器中。
 * 输入  :用于读取RTC时间的结构体指针
 * 输出  :用户在超级终端中输入的时间值,单位为 s
 * 调用  :内部调用
 */
void Time_Regulate(struct rtc_time *tm)
{ 

#if 0	 //从串口输入时间
    u32 Tmp_YY = 0xFF, Tmp_MM = 0xFF, Tmp_DD = 0xFF, Tmp_HH = 0xFF, Tmp_MI = 0xFF, Tmp_SS = 0xFF;
	  
    /* 这里面把串口接收中断关掉,因为用的是scanf()查询接收 
     * 如果中断接收和查询接收都一起打开的话,会使得输入非常慢
     */
    USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
  
    printf("\r\n=========================Time Settings==================");
	
	  printf("\r\n  请输入年份(Please Set Years):  20");

	  while (Tmp_YY == 0xFF)
	  {
	    Tmp_YY = USART_Scanf(99);
	  }

	  printf("\n\r  年份被设置为:  20%0.2d\n\r", Tmp_YY);

	  tm->tm_year = Tmp_YY+2000;
	
	  Tmp_MM = 0xFF;

	  printf("\r\n  请输入月份(Please Set Months):  ");

	  while (Tmp_MM == 0xFF)
	  {
	    Tmp_MM = USART_Scanf(12);
	  }

	  printf("\n\r  月份被设置为:  %d\n\r", Tmp_MM);

	  tm->tm_mon= Tmp_MM;
	
	  Tmp_DD = 0xFF;

	  printf("\r\n  请输入日期(Please Set Dates):  ");

	  while (Tmp_DD == 0xFF)
	  {
	    Tmp_DD = USART_Scanf(31);
	  }

	  printf("\n\r  日期被设置为:  %d\n\r", Tmp_DD);

	  tm->tm_mday= Tmp_DD;
	
	  Tmp_HH  = 0xFF;

	  printf("\r\n  请输入时钟(Please Set Hours):  ");

	  while (Tmp_HH == 0xFF)
	  {
	    Tmp_HH = USART_Scanf(23);
	  }

	  printf("\n\r  时钟被设置为:  %d\n\r", Tmp_HH );

	  tm->tm_hour= Tmp_HH;
	    
	  Tmp_MI = 0xFF;

	  printf("\r\n  请输入分钟(Please Set Minutes):  ");

	  while (Tmp_MI == 0xFF)
	  {
	    Tmp_MI = USART_Scanf(59);
	  }

	  printf("\n\r  分钟被设置为:  %d\n\r", Tmp_MI);

	  tm->tm_min= Tmp_MI;
	  
	  Tmp_SS = 0xFF;

	  printf("\r\n  请输入秒钟(Please Set Seconds):  ");

	  while (Tmp_SS == 0xFF)
	  {
	    Tmp_SS = USART_Scanf(59);
	  }

	  printf("\n\r  秒钟被设置为:  %d\n\r", Tmp_SS);

	  tm->tm_sec= Tmp_SS;
    
    /* 当时间输入完成后,再把串口接收中断打开,为的是接收enter返回这个命令 */
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
#else	//默认固定时间
		tm->tm_year = 2013;	
	 
	  tm->tm_mon= 11;	
	
	  tm->tm_mday= 20;	
 
	  tm->tm_hour= 13;	    

	  tm->tm_min= 10;
	  
	  tm->tm_sec= 10;
    

#endif
}
Example #8
0
/*
 * 函数名:Time_Regulate
 * 描述  :返回用户在超级终端中输入的时间值,并将值储存在
 *         RTC 计数寄存器中。
 * 输入  :用于读取RTC时间的结构体指针
 * 输出  :用户在超级终端中输入的时间值,单位为 s
 * 调用  :内部调用
 */
void Time_Regulate(struct rtc_time *tm)
{
	  u32 Tmp_YY = 0xFF, Tmp_MM = 0xFF, Tmp_DD = 0xFF, Tmp_HH = 0xFF, Tmp_MI = 0xFF, Tmp_SS = 0xFF;
	
	  printf("\r\n=========================Time Settings==================");
	
	  printf("\r\n  请输入年份(Please Set Years):  20");

	  while (Tmp_YY == 0xFF)
	  {
	    Tmp_YY = USART_Scanf(99);
	  }

	  printf("\n\r  年份被设置为:  20%0.2d\n\r", Tmp_YY);

	  tm->tm_year = Tmp_YY+2000;
	
	  Tmp_MM = 0xFF;

	  printf("\r\n  请输入月份(Please Set Months):  ");

	  while (Tmp_MM == 0xFF)
	  {
	    Tmp_MM = USART_Scanf(12);
	  }

	  printf("\n\r  月份被设置为:  %d\n\r", Tmp_MM);

	  tm->tm_mon= Tmp_MM;
	
	  Tmp_DD = 0xFF;

	  printf("\r\n  请输入日期(Please Set Dates):  ");

	  while (Tmp_DD == 0xFF)
	  {
	    Tmp_DD = USART_Scanf(31);
	  }

	  printf("\n\r  日期被设置为:  %d\n\r", Tmp_DD);

	  tm->tm_mday= Tmp_DD;
	
	  Tmp_HH  = 0xFF;

	  printf("\r\n  请输入时钟(Please Set Hours):  ");

	  while (Tmp_HH == 0xFF)
	  {
	    Tmp_HH = USART_Scanf(23);
	  }

	  printf("\n\r  时钟被设置为:  %d\n\r", Tmp_HH );

	  tm->tm_hour= Tmp_HH;
	    
	  Tmp_MI = 0xFF;

	  printf("\r\n  请输入分钟(Please Set Minutes):  ");

	  while (Tmp_MI == 0xFF)
	  {
	    Tmp_MI = USART_Scanf(59);
	  }

	  printf("\n\r  分钟被设置为:  %d\n\r", Tmp_MI);

	  tm->tm_min= Tmp_MI;
	  
	  Tmp_SS = 0xFF;

	  printf("\r\n  请输入秒钟(Please Set Seconds):  ");

	  while (Tmp_SS == 0xFF)
	  {
	    Tmp_SS = USART_Scanf(59);
	  }

	  printf("\n\r  秒钟被设置为:  %d\n\r", Tmp_SS);

	  tm->tm_sec= Tmp_SS;
}
Example #9
0
void serialShellGetDateTime(RTC_DateTypeDef *date, RTC_TimeTypeDef *time)
{
  uint32_t year = 0xFFF, month = 0xFFF, day = 0xFFF, hour = 0xFFF, minute = 0xFFF, second = 0xFFF;

  printf("\r\n==============Date Settings=====================================");
  printf("\r\n  Please Set Year (00..99)");
  printf("\r\n");
  while (year == 0xFFF)
  {
    year = USART_Scanf(2, 0, 99);
  }
  printf(":  %d", year);

  printf("\r\n  Please Set Month (01..12)");
  printf("\r\n");
  while (month == 0xFFF)
  {
    month = USART_Scanf(2, 1, 12);
  }
  printf(":  %d", month);

  printf("\r\n  Please Set Day (01..31)");
  printf("\r\n");
  while (day == 0xFFF)
  {
    day = USART_Scanf(2, 1, 31);
  }
  printf(":  %d", day);
  printf("\r\n");

  date->Year = year;
  date->Month = month;
  date->Date = day;

  printf("\r\n==============Time Settings=====================================");
  printf("\r\n  Please Set Hours");
  printf("\r\n");
  while (hour == 0xFFF)
  {
    hour = USART_Scanf(2, 0, 23);
  }
  printf(":  %d", hour);

  printf("\r\n  Please Set Minutes");
  printf("\r\n");
  while (minute == 0xFFF)
  {
    minute = USART_Scanf(2, 0, 59);
  }
  printf(":  %d", minute);

  printf("\r\n  Please Set Seconds");
  printf("\r\n");

  while (second == 0xFFF)
  {
    second = USART_Scanf(2, 0, 59);
  }
  printf(":  %d", second);
  printf("\r\n");

  time->Hours = hour;
  time->Minutes = minute;
  time->Seconds = second;
  time->TimeFormat = RTC_HOURFORMAT12_AM;
  time->DayLightSaving = RTC_DAYLIGHTSAVING_NONE ;
  time->StoreOperation = RTC_STOREOPERATION_RESET;
}