将littlevGL移植到nrf52840

 

一、什么是LittlevGL

       LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一些必备组件,具有易于使用的图形元素,美观的视觉效果和非常低的内存占用。

  LittlevGL最大的优点是MIT开源协议,使用LittlevGL不用考虑代码开源的问题。所有代码采用C实现,代码体积约400K,能解决许多轻量级的UI绘制问题。

二、获得LittlevGL源码

      1、访问官方网站:https://littlevgl.com/

   2、从GitHub中获取:https://github.com/littlevgl/lvgl

     源码文件 lvgl

    例程文件 lv_examples

三、开始移植

  将littlevGL移植到nrf52840      将littlevGL移植到nrf52840     将littlevGL移植到nrf52840

 

   将对应的源文件添加进去,lvgl_example添加的lv_port_disp_template.c 是显示用的文件,你也可以将lv_port_disp_template.c改成lv_port_disp.c,也可不改

   配置文件,源文件里是没有lv_conf.h文件的,可以用lv_conf_template.h更改过来lv_conf.h。

  然后就是配置显示(我用的是1.3寸的tft屏240*240)

1、LV_HOR_RES_MAX 显示器的宽分辨率 240

2、LV_VER_RES_MAX 显示器的高分辨率 240 

3、LV_COLOR_DEPTH 显示器的颜色深度,当前有8/16/32三种配置,这个选择16

4、#define LV_DPI              60//130     /*[px]*/这个显示图形的大小设置

5、#  define LV_MEM_SIZE    (16U * 1024U) //空间大小

6、去掉GPU功能:#define LV_USE_GPU              0   

7、其它的宏,默认就好。

lv_port_disp.c里的宏#if 0,要改成1.

然后在main函数里添加如下函数:

将littlevGL移植到nrf52840

void lv_demo_widgets(void)
{
  /*Create an Arc*/
  lv_obj_t * arc = lv_arc_create(lv_scr_act(), NULL);
  lv_arc_set_bg_angles(arc, 0, 360);
  lv_arc_set_angles(arc, 270, 270);
  lv_obj_align(arc, NULL, LV_ALIGN_CENTER, 0, 0);

  /* Create an `lv_task` to update the arc.
   * Store the `arc` in the user data*/
  lv_task_create(arc_loader, 20, LV_TASK_PRIO_LOWEST, arc);
}

编译成功烧录就OK啦,nrf52840目前刷屏的时候有点慢,后续再想办法 看能不能让他快速的刷屏。