1.28寸GC9A01-TFT屏幕用在lvgl上的打点函数

设备

        用的是优信电子的现成1.28寸GC9A01-TFT屏幕(圆的)驱动          驱动板子是正点的mini精英板  

        优信原文链接:1.28寸     驱动:优信驱动   我的MDK工程(包含lvgl v8.2):keil工程

注意事项

以下开始是我移植时发现的问题,希望能帮助到想自己移植的朋友

        一:lvgl中需要配置打点函数,正点的LVGL教程中传入lv_port_disp_template.c中static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p) 所调用的函数是一个颜色块打印函数,我找了很久没找到GC9A01的颜色块打印函数,只有单个颜色,于是自己结合正点的屏幕驱动和优信的单颜色打印函数改写了一个颜色块打印函数

/*********************************************************
函数说明:在指定区域填充颜色
形参:xsta,ysta    x、y起始坐标 
     xend,yend    x、y结束坐标
     color      要填充颜色的数组首地址

**********************************************************/

void LCD_color_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,uint16_t *color)
{         
	uint16_t height, width;
    uint16_t i, j;
    width = xend - xsta + 1;            /* 得到填充的宽度 */
    height = yend - ysta + 1;           /* 高度 */
		
	LCD_Address_Set(xsta,ysta,xend,yend);//设置显示范围
	for(i=0;i<height;i++)
	{													   	 	
		for(j=0;j<width;j++)
		{
			LCD_WR_DATA(color[i * width + j]);
		}
	} 					  	    
}

把它放在lcd.c里面就行,记得定义在lcd.h里面

二:因为我用的是HAL库,所以我在把标准库的驱动改成HAL库的时候u8和uint8_t之类的定义有点不懂,略显笨拙,有能力的可以自己封装一下,在lcd_init.h中

#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t

三:自己写的lvgl的显示代码可以自己建一个文件夹,我这里懒,测试代码直接放main里面了

四:这种情况是堆空间溢出的问题

在lv_conf.h中修改

 #define LV_MEM_SIZE (35U * 1024U)          /*[bytes]*/

对于mini精英板子来说,写48*1024是会报错的,需要改小一点

五:改成HAL库很简单但是记得lcd_init.h改成HAL库时,记得包含hal库的头文件,否则GPIO配置报错

#include "./SYSTEM/sys/sys.h"
#include "./STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal.h"

六:接口说明在优信驱动文件中有,lvd_init.h中是引脚配置

//-----------------LCD端口配置---------------- 

#define LCD_SCLK_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET)//SCL=SCLK
#define LCD_SCLK_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET)
																										 
#define LCD_MOSI_Clr() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET)//SDA=MOSI
#define LCD_MOSI_Set() HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET)
																										 
#define LCD_RES_Clr()  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_RESET)//RES
#define LCD_RES_Set()  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_SET)
																										
#define LCD_DC_Clr()   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET)//DC
#define LCD_DC_Set()   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET)
																										 
#define LCD_CS_Clr()   HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_RESET)//CS
#define LCD_CS_Set()   HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,GPIO_PIN_SET)
																										 
#define LCD_BLK_Clr()  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_RESET)//BLK
#define LCD_BLK_Set()  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_7,GPIO_PIN_SET)

可以了 

  

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值