Littlevgl的时间显示
基于stm32的littlevgl、RTC时间显示
获取时间
不想看的可以点击→完整代码下载代码,验证效果。效果图在最底。
获取RTC时间
// 放入main函数的while循环里面
void calendar_gettime(void)
{
if(Display_btn != NULL) // 如果时间按钮存在,则获取RTC时间,防止退出卡死
{
if(Rtctmp == RTC_TimeStruct.Seconds) // 每1秒更新一次显示数据
{
HAL_RTC_GetDate(&RTC_Handler,&RTC_DateStructure,RTC_FORMAT_BIN); //RTC获取日期
HAL_RTC_GetTime(&RTC_Handler,&RTC_TimeStruct,RTC_FORMAT_BIN); // RTC获取时间
sprintf((char*)Date_tbuf,
"20%0.2d-%0.2d-%0.2d "
,RTC_DateStructure.Year,RTC_DateStructure.Month,RTC_DateStructure.Date);
sprintf((char*)Time_tbuf,
"%02d:%02d:%02d"
,RTC_TimeStruct.Hours,RTC_TimeStruct.Minutes,RTC_TimeStruct.Seconds); // 将获得的时间放入数组
strcat((char*)Date_tbuf,(char*)Time_tbuf);
lv_label_set_text(Display_label,(char*)Date_tbuf); // 将获得时间的数组打印到时间显示标签
(void)RTC->DR; // 放入影子寄存器?具体不太懂,可以解读也行
}
Rtctmp=RTC_TimeStruct.Seconds;
}
}
效果如下:实际会随RTC时钟跳动,没弄GIF图。