调试CCD遇到的问题

LVGL切换界面输出警告

在这里插入图片描述
开启了一个定时器实时刷新图片源,一旦切换界面就输出警告,屏蔽lv_img_set_src之后警告消失

static void timer_event_handler(lv_timer_t * timer)
{
    //lv_img_set_src(guider_ui.main_img_1, &image_256x80);/*设置图片源 From variable*/
}

static void lv_timer_test()
{
    static uint32_t user_data = 10;
    lv_timer_t * timer1 = lv_timer_create(timer_event_handler,100,(void *)&user_data);
}

void GUI_APP(void)
{

    setup_ui(&guider_ui);
    lv_timer_test();
}

解决方法

keil遇到如下错误

在这里插入图片描述

解决方法

方法1

将工程编码格式切换为GB2312

方法2

点击魔术棒图标,切换到C/C++选项栏,Misc Controls 中添加编译选项:

--no-multibyte-chars

在这里插入图片描述

如何批量将keil文件编码转换为utf-8

在这里插入图片描述

对有动画的界面进行页面切换卡死

在这里插入图片描述
在主界面通过anim实现动画显示,点击设置进行页面切换会死机

//目标刷新
static void tag_anim_event_handler(void *var, int32_t v)
{

}
//图片和label刷新
static void img_anim_event_handler(void *var, int32_t v)
{
    lv_ui *ui = (lv_ui *)var;

    lv_img_set_src(ui->main_img_1, &image_256x80);/*设置图片源 From variable*/
    lv_label_set_text_fmt(ui->main_label,"%d",v);
}

static void lv_anim_test(lv_ui *ui)
{
    lv_anim_t a;

    lv_anim_init(&a);
    lv_anim_set_var(&a, ui);
    lv_anim_set_exec_cb(&a, img_anim_event_handler);
    lv_anim_set_values(&a, 0, 10);					//设置开始和结束值
    lv_anim_set_time(&a, 2000);
    lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
    lv_anim_start(&a);

    lv_anim_set_exec_cb(&a, tag_anim_event_handler);
    lv_anim_set_time(&a, 2000);
    lv_anim_start(&a);
}
void setup_scr_main(lv_ui *ui)
{
    ui->main = lv_obj_create(NULL);

	lv_anim_test(ui);

	//Init events for screen
	events_init_main(ui);
}

解决方法

分析上面程序,切换页面之后主页面的组件结构体空间会被释放,导致ui->main_img_1,ui->main_label成为野指针,但是img_anim_event_handler回调函数仍然会定时调用来刷新图片,导致死机,所以在使用ui->main_img_1,ui->main_label指针之前判断是否为野指针,通过函数lv_obj_is_valid(ui->main_img_1)。

static void img_anim_event_handler(void *var, int32_t v)
{
    lv_ui *ui = (lv_ui *)var;

    if(!lv_obj_is_valid(ui->main_img_1)) return;			//如果是野指针,则退出

    lv_img_set_src(ui->main_img_1, &image_256x80);/*设置图片源 From variable*/
    lv_label_set_text_fmt(ui->main_label,"%d",v);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值