biao22ndg的个人空间 https://bbs.21ic.com/?751351 [收藏] [复制] [RSS]

日志

基于STM32F407移植emWin第一步——运行起来

已有 537 次阅读2018-5-1 19:10 |个人分类:STM32|系统分类:单片机

基于STM32F407移植emWin基础篇——运行起来
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);

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)