RTC of stm32f767

1. Introduction to RTC

 Second, the IDE configures the driver.

1, Enable external LSE clock.

 2. Select LSE.

 3. RTC clock frequency division.

 

 Third, program usage.

1. Initialization.

RTC_TimeTypeDef sTime;
RTC_DateTypeDef sDate;

RTC_DateTypeDef RtcDate;
RTC_TimeTypeDef RtcTime;

uint8_t time_set = 0;//用户设置时间标记


/* RTC init function */
void MX_RTC_Init(void)
{

  /* USER CODE BEGIN RTC_Init 0 */

  /* USER CODE END RTC_Init 0 */

  /* USER CODE BEGIN RTC_Init 1 */

  /* USER CODE END RTC_Init 1 */

  /** Initialize RTC Only
  */
  hrtc.Instance = RTC;
  hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  hrtc.Init.AsynchPrediv = 127;
  hrtc.Init.SynchPrediv = 255;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
  hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN RTC_Init 2 */

 //HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR0,0X0000);//取消标记
  if(HAL_RTCEx_BKUPRead(&hrtc,RTC_BKP_DR0)!=0X5050)//是否第一次配置
  {
	    sTime.Hours = 11;
	    sTime.Minutes = 58;
	    sTime.Seconds = 30;
	    sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
	    sTime.StoreOperation = RTC_STOREOPERATION_RESET;
	    if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
	    {
	      Error_Handler();
	    }
	    sDate.WeekDay = RTC_WEEKDAY_MONDAY;
	    sDate.Month = RTC_MONTH_JANUARY;
	    sDate.Date = 30;
	    sDate.Year = 23;

	    if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
	    {
	      Error_Handler();
	    }

	    HAL_RTCEx_BKUPWrite(&hrtc,RTC_BKP_DR0,0X5050);//标记已经初始化过了
  }


  /* USER CODE END RTC_Init 2 */

}

2. Read program

 HAL_RTC_GetTime(&hrtc, &RtcTime,  RTC_FORMAT_BIN);//读出时间值
 HAL_RTC_GetDate(&hrtc, &RtcDate,  RTC_FORMAT_BIN);//一定要先读时间后读日期
printf(" RTC实时时钟测试\r\n");
printf(" 实时时间:%04d-%02d-%02d  %02d:%02d:%02d  \r\n",2000+RtcDate.Year,
	         		   RtcDate.Month, RtcDate.Date,RtcTime.Hours, RtcTime.Minutes, RtcTime.Seconds);//显示日期时间

Four, summary.

  Write and read functions, there are two formats, RTC_FORMAT_BIN and RTC_FORMAT_BCD, that is, binary and BCD format. Use RTC_FORMAT_BIN here.

Guess you like

Origin blog.csdn.net/m0_38012497/article/details/128800593