here more informations:
Template / example discovery project.
For touch event following function is initialized and called, and lv_chart is called in a simple main while loop:
Touch event:
lv_obj_add_event_cb(ui->screen, screen_event_handler, LV_EVENT_GESTURE, ui);
static void screen_event_handler(lv_event_t *e)
{
..
lv_obj_t * act_scr = lv_scr_act();
lv_disp_t * d = lv_obj_get_disp(act_scr);
if (d->prev_scr == NULL && (d->scr_to_load == NULL || d->scr_to_load == act_scr))
{
if (ui.screen_1_del == true){
setup_scr_screen_1(&ui);
lv_scr_load_anim(ui.screen_1, LV_SCR_LOAD_ANIM_OVER_BOTTOM, 100, 100, true);
ui.screen_del = true;
}
}
..
}
Chart update:
while (1)
{
BSP_LED_Toggle(LED2);
HAL_Delay(5);
lv_task_handler();
if( (millis()-lastMillis2) > 20){
lastMillis2 = millis();
lv_chart_set_all_value(ui.screen_chart_1, screen_chart_1_0, LV_CHART_POINT_NONE);
lv_chart_set_all_value(ui.screen_chart_1, screen_chart_1_1, LV_CHART_POINT_NONE);
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_0, lv_rand(10,90));
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_0, lv_rand(10,90));
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_0, lv_rand(10,90));
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_0, lv_rand(10,90));
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_0, lv_rand(10,90));
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_1, hallValue1);
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_1, hallValue1);
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_1, hallValue1);
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_1, hallValue1);
lv_chart_set_next_value(ui.screen_chart_1, screen_chart_1_1, hallValue1);
}
}
EDIT:
With #define LV_USE_ASSERT_MEM_INTEGRITY 1
it freezes much earlier…