蓝桥杯嵌入式学习笔记---基于STM32G431RB-RTC的基本应用

一,原理

RTC实质上就是一个单片机内部的一个万年历可以读取获得到时间,和日期。

二,cubemax配置

 

 

这里要使分频为1hz,750000/125/6000。

三,keil的相关配置

rtc.c

RTC_HandleTypeDef hrtc;
void RTC_Init(void)
{
  RTC_TimeTypeDef sTime = {0};
  RTC_DateTypeDef sDate = {0};
	
  hrtc.Instance = RTC;
  hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
  hrtc.Init.AsynchPrediv = 125;
  hrtc.Init.SynchPrediv = 6000;
  hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
  hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
  hrtc.Init.OutPutPullUp = RTC_OUTPUT_PULLUP_NONE;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    Error_Handler();
  }
  sTime.Hours = 0x15;
  sTime.Minutes = 0x10;
  sTime.Seconds = 0x5;
  sTime.SubSeconds = 0x0;
  sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK)
  {
    Error_Handler();
  }
  sDate.WeekDay = RTC_WEEKDAY_WEDNESDAY;
  sDate.Month = RTC_MONTH_SEPTEMBER;
  sDate.Date = 0x1;
  sDate.Year = 0x21;

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

}

void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
{

  if(rtcHandle->Instance==RTC)
  {
    __HAL_RCC_RTC_ENABLE();
  }
}

 rtc.h

extern RTC_HandleTypeDef hrtc;
void RTC_Init(void);

main.h

初始化

RTC_TimeTypeDef H_M_S_Timer;
RTC_DateTypeDef Y_M_D_Date;
uint8_t Second;
		RTC_Init();

显示(这里面要记得时间和日期要同时读才行)(入口参数的第三个也一定要选二进制的))

HAL_RTC_GetTime(&hrtc,&H_M_S_Timer,RTC_FORMAT_BIN);
	HAL_RTC_GetDate(&hrtc,&Y_M_D_Date,RTC_FORMAT_BIN);
	
	
	sprintf((char*)Lcd_Disp_String,"Time:%02d-%02d-%02d",(unsigned int)H_M_S_Timer.Hours,(unsigned int)H_M_S_Timer.Minutes,(unsigned int)H_M_S_Timer.Seconds);
	LCD_DisplayStringLine(Line0,Lcd_Disp_String);

时钟分频

  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1
                              |RCC_PERIPHCLK_ADC12;
  PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
  PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
  PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_HSE_DIV32;

猜你喜欢

转载自blog.csdn.net/qq_59320783/article/details/128665377