RTC de stm32f767

1. Introducción a RTC

 En segundo lugar, el IDE configura el controlador.

1, habilite el reloj LSE externo.

 2. Seleccione LSE.

 3. División de frecuencia de reloj RTC.

 

 En tercer lugar, el uso del programa.

1. Inicialización.

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. Leer programa

 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);//显示日期时间

Cuatro, resumen.

  Funciones de escritura y lectura, hay dos formatos, RTC_FORMAT_BIN y RTC_FORMAT_BCD, es decir, formato binario y BCD. Use RTC_FORMAT_BIN aquí.

Supongo que te gusta

Origin blog.csdn.net/m0_38012497/article/details/128800593
Recomendado
Clasificación