RT-Thread论坛
直播中

klysa

13年用户 1229经验值
私信 关注
[问答]

基于RT-Thread V4.1.1的LVGL运行后,界面多次切换后出现报错的原因?

基于RT-Thread V4.1.1的LVGL运行后,界面不切换,运行是正常的,界面多次切换后或出现
msh />(header_ptr->magic == (RT_MEMHEAP_MAGIC | RT_MEMHEAP_USED)) assertion failed at function:rt_memheap_free, line number:622
这个的经过,然后就死掉了。

界面切换函数如下,不知道在哪里有重复释放内存导致的,一直没有找到原因:

static void screen_btn_1_event_handler (lv_event_t *e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * act_scr = lv_scr_act();
    lv_disp_t * d = lv_obj_get_disp(act_scr);
    switch (code) {
    case LV_EVENT_CLICKED:
    {
        if (d->prev_scr == NULL && (d->scr_to_load == NULL || d->scr_to_load == act_scr))
        {
            lv_obj_clean(act_scr);
            if (guider_ui.screen_1_del == true) {
              setup_scr_screen_1(&guider_ui);
            }
            lv_scr_load_anim(guider_ui.screen_1, LV_SCR_LOAD_ANIM_NONE, 20, 20, true);
            guider_ui.screen_1_del = true;
        }
        break;
    }
    default:
        break;
    }
}

回帖(1)

杨斌

2024-3-22 18:13:59
可以看下LVGL软件包里的文档\docs\porting\os.md, 关于lvgl在rtos里使用是需要加互斥锁的,不然容易造成异常的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分