一、为什么选择LVGL8.2版本
因为想使用NXP的GUI Guider进行开发,而目前他的版本支持只有7.10.1和8.2.0两个。
二,获取LVGL并移植
到下列地址下载: LVGL的GITHUB仓库 选择8.2版本
三、新建工程
1.要求 有一个显示屏(分辨率大于100*100,后续GUI Guider要求),单片机能正常驱动。并有一个填充点函数,类似于LCD_Fill(uint16_t x,uint16_t y,uint16_t color); 最好编写一个色块填充函数,有利于提高速度。 2.复制LVGL驱动 2.1 单片机工程文件夹下面建立lvgl文件夹,用来存放驱动;
2.2将下载的8.2版本LVGL解压后,复制下列文件到单片机工程文件 2.3复制完成后,文件列表如下,注意删除文件名的“_template”后缀,porting文件夹里面的也要删除这个后缀: 2.4在单片机工程管理里面,建立管理目录: 其中GUI/LVGL,添加lvgl->src下的所有C文件。这个比较考验耐心,很多文件。 GUI/Porting,添加lvgl->porting文件夹里面的C文件。 GUI/APP,添加lv_config.h和lvgl.h头文件,添加完效果如下: 其中GUI/Generated先不管。 2.5修改lv_port_disp.c文件内容: 同时更新此文件包含的刷屏函数
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
ILI9163B_FillColor(area->x1,area->y1,area->x2,area->y2,(uint16_t *)color_p);
lv_disp_flush_ready(disp_drv);
}
其中被注释的是默认描点函数,比较慢,可以考虑自己编写色块填充函数来提高速度。 2.6.修改lv_port_indev.c文件 2.7修改lv_config.h文件 此文件除了按照2.5里面修改分辨率之外,还可以启用CPU占用率观察,这样就可以不加入demo文件,直接观察lvgl是否正常启动了。 2.8,初始化main程序 首先包含所需头文件 初始化。 2.9启动lvgl 在freertos里面开设一个任务,周期刷新即可,记得freertos包含lvgl的头文件。
void StartLvglTask(void const * argument)
{
for(;;)
{
osDelay(5);
lv_task_handler();
}
}
至此,lvgl即可驱动,里面会有比较多的警告,可以忽略。
注意
1、lvgl的头文件包含如果报错,可以在keil里面设置简易包含: 2色块填充函数 在lv_port_disp.c文件里面,推荐使用色块填充函数;
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p) {
ILI9163B_FillColor(area->x1,area->y1,area->x2,area->y2,(uint16_t *)color_p);
lv_disp_flush_ready(disp_drv);
}
注意这个函数的color_p是一个指向某一区块(设置缓存一般是1/10屏幕高度)颜色的指针。
看一下实际效果吧: 忽略上面的3个控件,那是用gui guider生成的。 下面的cpu占用率和fps是此次项目生成的。
|