一个适合单片机初学者的娱乐(六、LVGL移植)

LVGL移植一般步骤:

一、下载LVGL源码:目前下载LVGL 8.3

     下载方式可以LVGL官网进行下载,也可以百度云下载此处不再多说,网上很多。

二、下载好的源码进行整理:

1、 将下载好的 lvgl-release-v8.3解压,打开后,如下图,图中标记的是移植有用的信息。

2、重新创建一个文件夹LVGL,将上图中的标记文件,复制粘贴到LVGL文件夹中,如下图所示,并将lv_conf_template.h 重新命名为 lv_conf_template.h

3、打开examples文件夹,将里面的删除,只保留porting文件夹。

4、打开porting文件夹,将lv_port_disp_template.c 等这几个文件名称中的template删除,如下图所示: 

 以上数据整理阶段基本完成了,后续进行stm32f103工程中的移植。

三、stm32f103工程移植LVGL

1、工程中创建新的分组:

2、在LVGL_Conf、LVGL_Porting、LVGL_Src中添加相应的文件,如下图

(2)  LVGL_Porting分组中将LVGL/examples/Porting文件中.c 移植进入:

(3 ) LVGL_Src分组中 将LVGL/src文件中,包括子文件夹下的所有文件下的  .c  通通添加进来,目前我们完成了代码的添加。文件接近100多个,慢慢添加不用着急

四、工程添加好文件后,进行具体的移植操作

1、打开lv_conf.h 文件 将 #if  0 改为  #if   1  

     根据自己屏幕参数进行修改:不用改的话,此处不做处理。

           

          根据实际情况,修改屏幕分辨率

             

 2、打开 lv_port_disp.c文件,将#if 0 改为 #if  1  打开功能

       根据自己屏幕显示参数例如 :240(H)* 280(V)自行修改下面参数;另外将屏幕的驱动函数 .h 添加到文件中

       

添加相应的画点显示函数:

修改显示存储数据的方式

 3. 打开 lv_port_disp.h   同样的#if  0 改为  #if   1  并修改 #include "lvgl.h"

因为此屏幕没有触摸功能,所以后续的触摸等占时未做修改。

五、编译调试,如果显示的错误是内存不够,我们可以根据芯片的实际存储空间,SRAM空间进行调整  .s 中的堆、栈空间。其他错误可以参看其他文章说明的方式,在C/C++ 编译条件中添加东西,或者勾选 C99

注 :lv_tick_inc(1);  在Systick_Handler中实现,LVGL在调度时需要有个 1ms 时间节拍进行屏幕刷新操作,你也可以在一个Timer定时器中来实现。

        

六、样例测试: 

        

int main(void)
{
	uint16_t zjyLcdVsp =0;
	
	/*---板级初始化 ----*/
	BSP_Init();  
	
	printf("The stm32 and esp32 test start ...................\n");
	
/************ 测试LVGL 功能 ***********************/
	LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
#if 1

	lv_init();
	lv_port_disp_init();

		// 按钮
	lv_obj_t *myBtn = lv_btn_create(lv_scr_act());                               // 创建按钮; 父对象:当前活动屏幕
	lv_obj_set_pos(myBtn, 50, 100);                                               // 设置坐标
	lv_obj_set_size(myBtn, 50, 80);                                             // 设置大小
 
	while(1)
	{

		lv_timer_handler();
		HAL_Delay(100);
		
	}


#endif	

 测试效果演示:

 

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值