FreeMaster移植stm32f103c8t6
转载
littleVGl开源GUI图形库的移植
一. 准备工作
二. 移植
- 在官网的的GitHub项目库中获取源码

- 将下载的
lvgl-master文件解压到自己的工程文件夹目录下 - 将
lvgl-master文件夹重命名为lvgl - 在
lvgl文件夹中的lv_conf_template.h复制到lvgl文件夹的同级目录下,并重命名为lv_conf.h ,文件结构如图: - 打开
lv_conf.h配置文件,将#if 0 改为 #if 1 ,设置屏幕的高宽像素以及颜色参数。如图: 
- 将
lvgl文件夹下的src文件夹下的所有得xx.c文件添加到keil工程当中。 
- 添加头文件路径

- 在你需要用到的littlevGL的文件添加#include “lvgl.h”
- 在main函数中调用
lv_init();初始化函数 - 设置显示缓冲区
//设置显示缓冲区,如下代码
static lv_disp_buf_t disp_buf; //定义变量disp_buf
static lv_color_t buf[LV_HOR_RES_MAX * 10]; //声明缓冲区大小
lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); //初始化显示缓冲区
- 注册屏幕写点函数
//像素打点,函数注册
lv_disp_drv_t disp_drv; //定义变量disp_drv
lv_disp_drv_init(&disp_drv); //初始化
disp_drv.flush_cb = my_disp_flush; //设置驱动功能的回调函数名
disp_drv.buffer = &disp_buf; //将缓冲区分配给显示器
lv_disp_drv_register(&disp_drv); //注册驱动程序
- 实现驱动回调函数
//回调函数的打点驱动函数实现
void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
{
int32_t x, y;
for(y = area->y1; y <= area->y2; y++)
{
for(x = area->x1; x <= area->x2; x++)
{
LCD_Fast_DrawPoint( x, y,color_p->full );//自己的打点函数
color_p++;
}
}
lv_disp_flush_ready(disp);
}
- 在
main函数中的while(1)里调用lv_task_handler(); - 配置一个
1~10ms的定时器调用lv_tick_inc(x);x是定时器周期 - 到了这里我们的移植基本就结束了
三. 测试我们移植的littleVGl图形库是否成功
- 我们可以到官网查看一些示小部件进行测试我们是否移植成功
- 查看官方文档中的对象类型。官方文档:https:///en/html/object-types/win.html
- 找一个简单的例子将代码复制到我们的
main函数中。 - 例如我们移植这个示例:

- 效果图
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。