基于STM32的LVGL的实时日历设置界面
提示:STM32、RTC、littlevgl、GUI
设置时间代码:
if( obj == Set_time_btn ) // 点击对象为设置按钮
{
if(event == LV_EVENT_RELEASED)
{
uint8_t week=0; // 存放设置日期后的-星期
lv_calendar_date_t * selected_date1 = lv_calendar_get_pressed_date(calendar1); // 获取点击后日历的年月日
if(selected_date1&&(selected_date1->year!=0)) // 只有点击过日历控件才会进行日期修改
{
week=RTC_Get_Week(selected_date1->year,selected_date1->month,selected_date1->day); // 根据年月日计算星期
RTC_Set_Date(selected_date1->year-0x7d0,selected_date1->month,selected_date1->day,week); // 修改RTC时间
}
}
}
从RTC中获取日期和时间
void calendar_gettime(void)
{
t++;
if(Rtctmp == RTC_TimeStruct.RTC_Seconds) //每100ms更新一次显示数据
{
RTC_GetTime(RTC_Format_BIN, &RTC_TimeStruct);
RTC_GetDate(RTC_Format_BIN, &RTC_DateStructure); //RTC获取日期
(void)RTC->DR;
}
Rtctmp=RTC_TimeStruct.RTC_Seconds;
}
效果图
当点击日期上方label会改变、点击OK更改RTC中的日期