考虑到GUI一般比较吃内存,使用403,本芯片可以配置开启最大224KB SRAM。
和其它开源软件类似,移植源码,移植接口,加几个头文件基本上就OK了。
这个GUI最简单的是只要移植刷位图就可以。
代码可以优化不少,直接使用DMA可以快速的发送一些列连续的数据。测试SPI 50M处理480x320.
效果还行。
加入RTOS后刷屏可以加入信号量,使用中断唤醒刷新任务,高效率实现刷屏。
配置刷多少行。如果内存够直接开两个显存,效果最完美,内存不大不小,可以适当配置。
内存耗费:60*320*2*2 = 75K(显示缓冲区) 64KB动态内存池。
由于我使用的是TFT是18位模式,所以开辟了一个大内存作为动态内存分配池。
实际使用可以适当减小。设置行数也是一样。
调用LVGL最基础的调用 lv_init();
// 定义风格
static lv_style_t lv_style_list;
//LV_SYMBOL_HOME
lv_style_init(&lv_style_list);
// 声明引用外部目标函数
extern lv_font_t myFont;
// 给style重新定向字体
lv_style_set_text_font(&lv_style_list, LV_STATE_DEFAULT, &myFont);
// 定时空间
lv_obj_t * bar1 = lv_bar_create(lv_scr_act(), NULL);
lv_obj_set_size(bar1, 200, 20);
lv_obj_align(bar1, NULL, LV_ALIGN_CENTER, 0, 0);
lv_bar_set_anim_time(bar1, 1000);
lv_bar_set_value(bar1, 50, LV_ANIM_ON);
// 创建标签空间
label = lv_label_create(lv_scr_act(), NULL);
// 装载新的style 给标签。
lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_style_list);