高级会员
- 积分
- 525
- 金钱
- 525
- 注册时间
- 2019-7-3
- 在线时间
- 330 小时
|
50金钱
LVGL移植,在回调函数中改变按键的显示内容,触摸时,串口打印显示已经进入回调函数(Clicked11、Clicked22、Clicked33切换),但是按键显示内容不改变,且程序运行有点卡,下面为回调函数:
static void event_handler(lv_obj_t * obj, lv_event_t event)
{
if(event == LV_EVENT_CLICKED) {
btn_flag++;
if(btn_flag==1)
{
lv_label_set_text(label1, "11");
lv_label_set_text(label2, "11");
// btn_flag=0;
printf("Clicked11\n");
}else if(btn_flag==2)
{
lv_label_set_text(label1, "22");
lv_label_set_text(label2, "22");
label11 = lv_label_create(lv_scr_act(),NULL);//创建标签
lv_obj_align(label11, NULL, LV_ALIGN_IN_TOP_LEFT, 5,50);
// lv_obj_add_style(label11, LV_LABEL_PART_MAIN, &label_style);//添加风格
lv_label_set_text(label11,"1");
lv_obj_set_size(label1,45,40);
// btn_flag=1;
printf("Clicked33\n");
}else if(btn_flag==3)
{
lv_label_set_text(label1, "33");
lv_label_set_text(label2, "33");
// btn_flag=1;
printf("Clicked44\n");
}
if(btn_flag==3)btn_flag=0;
}
else if(event == LV_EVENT_VALUE_CHANGED) {
printf("Toggled\n");
}
}
是不是这两个函数(lv_tick_inc(1); lv_task_handler();)有问题,导致LVGL重绘出问题
|
最佳答案
查看完整内容[请看2#楼]
找到原因了,触摸屏使用的SPI总线,这个总线同时也在用于其他芯片通信,重绘时,其他任务打断了重绘。
解决办法:需要在重绘任务加临界段代码保护。
|