RVB2601开发板上已经移植好了LVGL,可以直接使用,使用步骤如下:
int main(void)
{
board_yoc_init();
lv_init();
oled_init();
show_page_init();
while(1){
lv_task_handler();
aos_msleep(100);
lv_tick_inc(100);
}
}
但是在"webplayer_demo"中使用lvgl时,会出现以下错误:
显示SRAM溢出了,因此需要精简一下变量的使用。在"lvgl_conf.h"中,有如下代码:
/* Size of the memory used by `lv_mem_alloc` in bytes (>= 2kB)*/
# define LV_MEM_SIZE (32U * 1024U)
可以看出,默认分配了32KB的空间给LVGL,用于动态内存申请。这块空间给的太大了,因此可以将其改小一些,比如改成4KB。这样就不报错了。
下面是我的初始化页面,全部使用的label控件,使用前记得引入"lvgl.h"和"lv_label.h"头文件:
lv_obj_t * label_temp;
lv_obj_t * label_humity;
lv_obj_t * label_speed;
void show_page_init()
{
lv_obj_t * label1 = lv_label_create(lv_scr_act(),NULL);
lv_label_set_long_mode(label1, LV_LABEL_LONG_BREAK); /*显示模式固定*/
lv_label_set_align(label1, LV_LABEL_ALIGN_CENTER); /*居中显示*/
lv_label_set_text(label1,"Smart Fan"); /*显示标签的内容*/
lv_obj_set_width(label1, 128); /*设置显示的宽度*/
lv_obj_align(label1, NULL, LV_ALIGN_IN_TOP_MID, 0, 0); /*靠项端居中显示*/
label_temp = lv_label_create(lv_scr_act(),NULL);
lv_label_set_long_mode(label_temp, LV_LABEL_LONG_BREAK); /*显示模式固定*/
lv_label_set_align(label_temp, LV_LABEL_ALIGN_LEFT); /*居中显示*/
sprintf(temp,"TEMP\t: -- C");
lv_label_set_text(label_temp,temp); /*显示标签的内容*/
lv_obj_set_width(label_temp, 128); /*设置显示的宽度*/
lv_obj_align(label_temp, NULL, LV_ALIGN_IN_TOP_LEFT, 0, 16); /*靠项端居中显示*/
label_humity = lv_label_create(lv_scr_act(),NULL);
lv_label_set_long_mode(label_humity, LV_LABEL_LONG_BREAK); /*显示模式固定*/
lv_label_set_align(label_humity, LV_LABEL_ALIGN_LEFT); /*居中显示*/
sprintf(humity,"RH\t: -- %%");
lv_label_set_text(label_humity,humity); /*显示标签的内容*/
lv_obj_set_width(label_humity, 128); /*设置显示的宽度*/
lv_obj_align(label_humity, NULL, LV_ALIGN_IN_TOP_LEFT, 0, 32); /*靠项端居中显示*/
label_speed = lv_label_create(lv_scr_act(),NULL);
lv_label_set_long_mode(label_speed, LV_LABEL_LONG_BREAK); /*显示模式固定*/
lv_label_set_align(label_speed, LV_LABEL_ALIGN_LEFT); /*居中显示*/
sprintf(fan_speed,"Speed\t: 0");
lv_label_set_text(label_speed,fan_speed); /*显示标签的内容*/
lv_obj_set_width(label_speed, 128); /*设置显示的宽度*/
lv_obj_align(label_speed, NULL, LV_ALIGN_IN_TOP_LEFT, 0, 48); /*靠项端居中显示*/
}
效果如下:
很好,讲的不错。很好,讲的不错。很好,讲的不错。很好,讲的不错。很好,讲的不错。很好,讲的不错。