OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4472|回复: 4

STEnWin移植问题,Alpha显示错误,LCD驱动没有问题。

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-4-3
在线时间
0 小时
发表于 2015-4-3 11:34:56 | 显示全部楼层 |阅读模式
5金钱
在移植完成后显示错误,使用GUIDEMO演示也有错误。
LCD的写点与读点程序正常。

字符显示测试代码
[mw_shl_code=c,true]GUI_SetFont(&GUI_Font8x16); GUI_SetBkColor(GUI_BLUE); GUI_Clear(); GUI_SetPenSize(10); GUI_SetColor(GUI_RED); GUI_DrawLine(80, 10, 240, 90); GUI_DrawLine(80, 90, 240, 10); GUI_SetBkColor(GUI_BLACK); GUI_SetColor(GUI_WHITE); GUI_SetTextMode(GUI_TM_NORMAL); GUI_DispStringHCenterAt("GUI_TM_NORMAL" , 160, 10); GUI_SetTextMode(GUI_TM_REV); GUI_DispStringHCenterAt("GUI_TM_REV" , 160, 26); GUI_SetTextMode(GUI_TM_TRANS); GUI_DispStringHCenterAt("GUI_TM_TRANS" , 160, 42); GUI_SetTextMode(GUI_TM_XOR); GUI_DispStringHCenterAt("GUI_TM_XOR" , 160, 58); GUI_SetTextMode(GUI_TM_TRANS | GUI_TM_REV); GUI_DispStringHCenterAt("GUI_TM_TRANS | GUI_TM_REV", 160, 74);[/mw_shl_code]
正常显示应该是这个



我的程序显示






Alpha测试代码
[mw_shl_code=c,true]GUI_EnableAlpha(1); GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetColor(GUI_BLACK); GUI_DispStringHCenterAt("Alphablending", 45, 41); GUI_SetColor((0x40uL << 24) | GUI_RED); GUI_FillRect(0, 0, 49, 49); GUI_SetColor((0x80uL << 24) | GUI_GREEN); GUI_FillRect(20, 20, 69, 69); GUI_SetColor((0xC0uL << 24) | GUI_BLUE); GUI_FillRect(40, 40, 89, 89);[/mw_shl_code]



多边形测试代码
[mw_shl_code=c,true]const GUI_POINT aPoints[] = { { 40, 20}, { 0, 20}, { 20, 0} }; GUI_POINT aEnlargedPoints[GUI_COUNTOF(aPoints)]; void Sample(void) { int i; GUI_Clear(); GUI_SetDrawMode(GUI_DM_XOR); GUI_FillPolygon(aPoints, GUI_COUNTOF(aPoints), 140, 110); for (i = 1; i < 10; i++) { GUI_EnlargePolygon(aEnlargedPoints, aPoints, GUI_COUNTOF(aPoints), i * 5); GUI_FillPolygon(aEnlargedPoints, GUI_COUNTOF(aPoints), 140, 110); } }[/mw_shl_code]






最佳答案

查看完整内容[请看2#楼]

问题已经解决。在移植的时候,这个函数void LCD_X_Config(void)的LCD驱动选择出现问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-4-3
在线时间
0 小时
 楼主| 发表于 2015-4-3 11:34:57 | 显示全部楼层
问题已经解决。在移植的时候,这个函数void LCD_X_Config(void)的LCD驱动选择出现问题。
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-4-3 18:10:30 | 显示全部楼层
不要用排线,直接接到开发板上试一下
开往春天的手扶拖拉机
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-9-18
在线时间
0 小时
发表于 2015-9-18 22:32:21 | 显示全部楼层
回复【3楼】ishark:
---------------------------------
你好, 我也遇到这个问题。我的驱动选择应该是对的啊。下面是的LCD_X_Config函数
  GUI_DEVICE * pDevice;
  CONFIG_FLEXCOLOR Config = {0};
  GUI_PORT_API ortAPI = {0};
  //
  // Set display driver and color conversion
  //
  pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);
  //
  // Display driver configuration, required for Lin-driver
  //
  LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
  LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
  //
  // Orientation
  Config.Orientation =  GUI_SWAP_XY | GUI_MIRROR_Y;
  GUIDRV_FlexColor_Config(pDevice, &Config);
  //
  // Set controller and operation mode
  //
  ortAPI.pfWrite16_A0  = LcdWriteReg;
  ortAPI.pfWrite16_A1  = LcdWriteData;
  ortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
  ortAPI.pfReadM16_A1  = LcdReadDataMultiple;
  GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66709, GUIDRV_FLEXCOLOR_M16C0B16);
回复

使用道具 举报

23

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2015-5-30
在线时间
9 小时
发表于 2015-9-26 23:14:45 | 显示全部楼层
楼主我的是白屏啊,你是怎么解决的
关于程序:
//配置程序,用于创建显示驱动器件,设置颜色转换程序和显示尺寸
void LCD_X_Config(void) {
GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_M565, 0, 0); //创建显示驱动器件
LCD_SetSizeEx    (0, lcddev.width, lcddev.height);
LCD_SetVSizeEx   (0, lcddev.width, lcddev.height);
if(lcddev.id == 0X5510) //0X5510为4.3寸 800x480的屏
{
if(lcddev.dir == 0) //竖屏  // 2001:3520 6352
{     // 9147:3832 6288
GUI_TOUCH_Calibrate(GUI_COORD_X,0,480,0,479);
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,800,0,799);
}else //横屏
{
//GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y); 
GUI_TOUCH_Calibrate(GUI_COORD_X,0,480,0,479); 
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,800,0,799);
}
}else if(lcddev.id == 0X1963)//1963为7寸屏 800*480 
{
if(lcddev.dir == 0) //竖屏
{ // 6368 3816
//GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y); 
GUI_TOUCH_Calibrate(GUI_COORD_X,0,800,0,799); 
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,0,479);
}else //横屏
{
GUI_TOUCH_Calibrate(GUI_COORD_X,0,800,0,799); 
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,0,479);
}
}else if(lcddev.id == 0X5310 || lcddev.id == 0X6804) //0X5510 0X6804为3.5寸 320x480
{
if(lcddev.dir == 0) //竖屏 
{
GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,3931,226);
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,3812,196);
}else //横屏
{
GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y); 
GUI_TOUCH_Calibrate(GUI_COORD_X,0,320,3931,226);
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,480,3812,196); 
}
}
else             //其他屏幕全部默认为2.8寸 320X240
{
if(lcddev.dir == 0) //竖屏
{
GUI_TOUCH_Calibrate(GUI_COORD_X,0,lcddev.width,155,3903);
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,lcddev.height,188,3935);
}else //横屏
{
GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y); 
GUI_TOUCH_Calibrate(GUI_COORD_X,0,240,155,3903); 
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,320,188,3935);
}
}
}


那需要改哪里?我觉得原子哥这个程序已经很好了。我想问的是我的居然白屏,你具体是怎么解决的??
要学的东西很多,不要慌,一步一个脚印,扎扎实实的学
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 12:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表