中级会员
- 积分
- 203
- 金钱
- 203
- 注册时间
- 2013-8-15
- 在线时间
- 44 小时
|
发表于 2018-1-11 18:26:54
|
显示全部楼层
本帖最后由 xyzjacky 于 2018-1-11 18:38 编辑
我是按照正点原子教程,和你的帖子进行的移植。以下是我的代码。
A.
首先是改 GUIConf.h 中的这一段代码:
#define GUI_NUM_LAYERS 2 // Maximum number of available layers //最大显示层数--2层
#define GUI_OS (0) //不支持使用OS
#define GUI_SUPPORT_TOUCH (0) // Support touchscreen //不使用触摸屏
#define GUI_DEFAULT_FONT &GUI_Font6x8 //显示字体默认大小
#define GUI_SUPPORT_MOUSE (0) /* Support a mouse */ //不支持使用鼠标
#define GUI_WINSUPPORT (1) /* Use window manager */ //支持窗口管理器
#define GUI_SUPPORT_MEMDEV (1) /* Memory device package available */ //支持存储设备
#define GUI_SUPPORT_DEVICES (1) /* Enable use of device pointers */ //使用设备指针
B.
然后修改 GUIConf.c 中的缓存大小,及配置函数
#define GUI_NUMBYTES (20*1024) //设置emWIN内存大小,20K
void GUI_X_Config(void) {
static U32 aMemory[GUI_NUMBYTES / 4];
GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
GUI_SetDefaultFont(GUI_FONT_8X12_ASCII); //设置显示字体大小
}
C.
再修改LCDConf_FlexColor_Template.c 中的代码
1. 先是宏定义
#define XSIZE_PHYS 320 // To be adapted to x-screen size //长320
#define YSIZE_PHYS 240 // To be adapted to y-screen size //宽240
2.再是那4个基本函数
static void LcdWriteReg(U16 Data) {
// ... TBD by user
LCD_wtREG((U8)Data); //写寄存器
}
static void LcdWriteData(U16 Data) {
// ... TBD by user
LCD_wt16bitData(Data); //写一个16位数据
}
static void LcdWriteDataMultiple(U16 * pData, int NumItems) {
while (NumItems--) {
// ... TBD by user
LCD_wt16bitData(*pData++); //连续写16位数据
}
}
static void LcdReadDataMultiple(U16 * pData, int NumItems) {
//U8 msb=0 , lsb=0;
while (NumItems--) {
// ... TBD by user
*pData++ = LCD_Read_16Data(); //读16位数据
}
}
3. LCD_X_Config函数的改写
void LCD_X_Config(void) {
GUI_DEVICE * pDevice;
CONFIG_FLEXCOLOR Config = {0};
GUI_PORT_API PortAPI = {0};
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0); //设置颜色格式
LCD_SetSizeEx (0, lcddev.width , lcddev.height);
LCD_SetVSizeEx(0, lcddev.width , lcddev.height);
// Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y;
GUIDRV_FlexColor_Config(pDevice, &Config);
PortAPI.pfWrite16_A0 = LcdWriteReg;
PortAPI.pfWrite16_A1 = LcdWriteData;
PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
PortAPI.pfReadM16_A1 = LcdReadDataMultiple;
GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66709, GUIDRV_FLEXCOLOR_M16C0B16);
}
|
|