RTC实时时钟是掉电后可继续计时的时钟,前提是有电池供电,这板子没有,所以直接是做不到真正的RTC的,其实可以将掉电之前的数据写入内存,下次开机直接读取。一般选用LSE时钟,但是这个LSE会占用PC引脚,与LCD冲突,所以干脆直接用HSE吧,反正板子要接电。
1.Cubemx配置
125和6000是为了分频,下图RTC时钟输入频率为750K,而我们要分为1HZ的时钟频率才能完成计时单位一秒的计时。
2.代码
先读时间再读日期
RTC_TimeTypeDef H_M_S_Time;
RTC_DateTypeDef Y_M_D_Date;
uint8_t Second;
HAL_RTC_GetTime(&hrtc, &H_M_S_Time, 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_Time.Hours,(unsigned int)H_M_S_Time.Minutes,(unsigned int)H_M_S_Time.Seconds);
LCD_DisplayStringLine(Line4, Lcd_Disp_String);
sprintf((char *)Lcd_Disp_String, "Date:%02d-%02d-%02d-%02d",(unsigned int)Y_M_D_Date.Year,(unsigned int)Y_M_D_Date.Month,(unsigned int)Y_M_D_Date.Date,(unsigned int)Y_M_D_Date.WeekDay);
LCD_DisplayStringLine(Line5, Lcd_Disp_String);