移植emWin到STM32F407的第一步——运行起来

emWin作为一款非常成熟的GUI,移植是非常方便的,只需简单添加几个文件,修改几个函数即可。

第一步:先确保已经成功驱动LCD了,然后准备三个函数:

        初始化函数DrvLCD_Init(void)、

        画点函数DrvLCD_DrawPoint(u16 x,u16 y, u16 color)、

        填充函数DrvLCD_FillRect(u16 xStar, u16 yStar, u16 xEnd, u16 yEnd, u16 color);

第二步:复制emWin文件,先在项目文件夹下新建emWin文件夹,先复制源码的文件:

        GUI_X.C、

        GUIConf.c、

        GUIConf.h、

        GUIDRV_Template.c、

        GUIDRV_Template.h、

        LCDConf_FlexColor_Template.c、

        LCDConf_FlexColor_Template.h、

        STemWin522_CM4_Keil.lib,然后复制整个inc文件夹。

第三步:新建一个空白的LCDConf.h,放在emWin文件夹下。

第四步:修改文件,

        打开GUIDRV_Template.c,删除_SetPixelIndex函数的内容,然后改为DrvLCD_DrawPoint((u16)x, (u16)y, (u16)PixelIndex);,删除_FillRect函数的内容,然后改为DrvLCD_FillRect((u16)x0, (u16)y0, (u16)x1, (u16)y1, LCD_COLORINDEX);

        打开LCDConf_FlexColor_Template.c,删除LCD_X_Config、LCD_X_DisplayDriver以外的函数,再删除LCD_X_Config函数的内容,然后改为

                GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_565, 0, 0);

                LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);

                LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);

        注意GUI_DEVICE_CreateAndLink的形参是“&GUIDRV_Template_API”,而不是原来的“GUI_DEVICE_CreateAndLink”;

        LCD_X_DisplayDriver函数里面的LCD_X_INITCONTROLLER下加入DrvLCD_Init();

第五步:启动GUI,启动函数是GUI_Init();,但在启动前必须先打开CRC,所以要在前面添加RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC,ENABLE);

你可能感兴趣的:(嵌入式)