gui部分:
移植参考https://blog.csdn.net/ballack_linux/article/details/40829313
基本可以一次性成功。
注意事项:
一、在LCDCONF头文件中:
1、LCD_BITSPERPIXEL定义的时候每个像素点的位数,和LCD驱动芯片相关;
2、LCD_CONTROLLER定义的是驱动器类型,我这里使用-1用自己的驱动
3、添加两个宏
#define LCD_SWAP_RB (1)//交换BGR到RGB
#define LCD_FIXEDPALETTE (565)
我使用的驱动器颜色是BGR所以LCD_SWAP_RB 定义为1,不然出来的颜色是反的;
4、宏LCD_INIT_CONTROLLER定义LCD初始化函数
因为我使用的自己驱动,所以这个宏定义为下面类型
//#define LCD_INIT_CONTROLLER()
// LCD_WRITE_REGLH(0x00>>1,LCD_REG0, LCD_REG1);
// LCD_WRITE_REGLH(0x02>>1,LCD_REG2, LCD_REG3);
// LCD_WRITE_REGLH(0x04>>1,LCD_REG4, LCD_REG5);
// LCD_WRITE_REGLH(0x06>>1,LCD_REG6, LCD_REG7);
// LCD_WRITE_REGLH(0x08>>1,LCD_REG8, LCD_REG9);
// LCD_WRITE_REGLH(0x0a>>1,LCD_REGA, LCD_REGB);
// LCD_WRITE_REGLH(0x0c>>1,LCD_REGC, LCD_REGD);
// LCD_WRITE_REG (0x0e>>1,0x00); /* 0, screen 2 start l*/
// LCD_WRITE_REG (0x10>>1,0x00); /* screen 2 start h /
// LCD_WRITE_REGLH(0x12>>1,LCD_REG12, LCD_REG13); / mem adr. offset, screen 1 vsize(lsb)*/
// LCD_WRITE_REGLH(0x14>>1,LCD_REG14, 0);
// LCD_WRITE_REGLH(0x1a>>1,0, LCD_REG1B);
// LCD_WRITE_REGLH(0x1c>>1,LCD_REG1C, 0)
#define LCD_INIT_CONTROLLER() LCD_Init_local()
5、LCDTemplate.c
在LCDTemplate.c中实现GUI对LCD操作的两个最基本函数接口
(a)、读点
第432行调用自己驱动的读点函数(读取某一个像素点的颜色)
(b)、画点
在第404行调用自己的画点函数(画某一个像素点指定颜色);
(c)写一个测试程序测试
/* USER CODE BEGIN 2 /
GUI_Init();//GUI初始化函数
GUI_SetBkColor(GUI_BLACK);
GUI_SetColor(GUI_BLUE);
GUI_DispString(“Hello word”);
GUI_SetColor(GUI_RED);
GUI_DispStringAt("—Li ziqiang",132,300);
GUI_SetColor(GUI_WHITE);
GUI_DrawCircle(120,160,119);
/ USER CODE END 2 */
/* Infinite loop /
/ USER CODE BEGIN WHILE /
PROGBAR_Handle progbar;
GUI_SetColor(GUI_RED);
progbar=PROGBAR_Create(70,150,100,15,WM_CF_SHOW);
GUI_Exec();
PROGBAR_SetBarColor(progbar,0,GUI_BLUE);
//PROGBAR_SetText(GUI_RED,“wo shi pro”);
while (1)
{
for(int i=0;i<100;i++)
{
PROGBAR_SetValue(progbar,i);
HAL_Delay(100);
GUI_Exec();
}
HAL_Delay(2000);
/ USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
6、我使用的LCD驱动器为ILI9341,驱动程序参考正点原子的LCD驱动程序
二、声明:该文章用于记录我自己的移植过程,不做任何商业用途,如有侵权请联系删除!