野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14153|回复: 6

请教:野火液晶显示BMP图像,出现白屏

[复制链接]
发表于 2014-8-23 09:32:45 | 显示全部楼层 |阅读模式
本帖最后由 chenyude 于 2014-8-23 10:02 编辑

RT,
野火光盘里面的液晶显示BMP图片的例程,用jtag把程序烧进开发板里面后,第一次可以正常显示图片,但是把电源开关关闭之后再打开,液晶屏就白屏了,复位很多次都不能刷出图像。
请问,有没有人知道为什么会这样呢???
谢谢了!!



----------------------------------------------------------------------------
现在已经发现了问题在什么地方。
一开始,视频里面说“液晶显示BMP图片”的液晶屏驱动还是跟“显示汉字例程”里面的液晶屏驱动一样,于是我就直接从显示汉字例程的液晶屏驱动复制过来了,但是,这样一来,我发现液晶屏是显示不了BMP图像的,只能显示汉字,无法刷出图片,而且,用串口调试助手查看程序发回来的调试信息,也有正常打开SD卡里面文件的调试信息,说明SD卡驱动是没问题的。于是乎,我就把自己的这个“显示BMP图片”的工程跟配套的“液晶屏显示BMP图片”例程一行一行地对比,看看哪里不同,结果发现了不同的地方在:液晶屏驱动源文件 bsp_ili9341.c 里面的开窗函数 。

下面这个开窗函数是 官方的BMP图片显示例程的:
void LCD_OpenWindow(uint16_t x, uint16_t y, uint16_t width, uint16_t height)
{
        LCD_ILI9341_CMD(0X2A);                                
        LCD_ILI9341_Parameter( x >> 8 );         
        LCD_ILI9341_Parameter( x & 0xff );       
        LCD_ILI9341_Parameter( (x+width-1) >> 8 );
        LCD_ILI9341_Parameter( (x+width-1) & 0xff );
       
        LCD_ILI9341_CMD(0X2B);                             
        LCD_ILI9341_Parameter( y >> 8 );
        LCD_ILI9341_Parameter( y & 0xff );
        LCD_ILI9341_Parameter( (y+height-1) >> 8);
        LCD_ILI9341_Parameter( (y+height-1) & 0xff);
       
        /* write gram start */
        LCD_ILI9341_CMD(0x2C);  //写数据命令
}


下面这个是 “显示汉字”的例程里面的开窗函数:
void LCD_OpenWindow(uint16_t x, uint16_t y, uint16_t width, uint16_t height)
{
        LCD_ILI9341_CMD(0X2A);                                
        LCD_ILI9341_Parameter( x >> 8 );       
        LCD_ILI9341_Parameter( x & 0xff );       
        LCD_ILI9341_Parameter( (x+width-1) >> 8 );
        LCD_ILI9341_Parameter( (x+width-1) & 0xff );
       
        LCD_ILI9341_CMD(0X2B);                             
        LCD_ILI9341_Parameter( y >> 8 );
        LCD_ILI9341_Parameter( y & 0xff );
        LCD_ILI9341_Parameter( (y+height-1) >> 8);
        LCD_ILI9341_Parameter( (y+height-1) & 0xff);
}



可以发现,BMP图片显示的“开窗函数”里面多出了一句 写数据命令语句。
好吧,虽然还没弄明白为什么这里会多出一句语句出来,但是还是补上去先吧,果然,液晶屏马上就可以刷出图片了。心里一阵欢喜。
但是,新的问题又来了,无意中发现,只要把开发板的电源关闭之后再打开,液晶屏就会白屏!!无论我怎么复位都不能正常显示东西出来。。。
这时候,我就在想,问题应该就在开窗函数里面多出来的 那一句 写数据命令吧??
于是就再次把 那句写数据命令语句给注释掉,再次编译烧写,还是那样,液晶屏可以正常显示汉字,无法显示BMP图片,但是,这时候,就不会出现把开发板的电源关闭之后再打开,液晶屏会白屏的现象了。

-----------------------------------------------------------------------------------------
请问大家,有没有人遇到过这个问题呢???能不能指点一下呢??谢谢了!!

QQ图片20140823093240.jpg
回复

使用道具 举报

 楼主| 发表于 2014-8-23 11:14:16 | 显示全部楼层
= =好吧,还是自己捣鼓。。。
最新发现,
开窗函数里面的“写数据命令”语句应该是必须要的,否则无法显示出BMP图像,至于关闭开发板电源再打开会白屏的问题,怀疑是因为在main函数里面,我在显示BMP图片之前还有几条语句去显示 汉字和英文字符串???
现在把前面显示英文和汉字的部分注释掉了,整个程序只显示BMP图片。
然后,电源关闭再打开会出现白屏的问题似乎不出现了。。。
只是,为啥会这样子呢?。。。还需要继续研究一下。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-23 11:36:28 | 显示全部楼层
0.o 原来二楼的猜测是错的啊。。。。
刚刚发现,会出现白屏的问题在于:

int main(void)
{
        /* USART1 config */
        //USART1_Config();
        //printf("\r\n this is a fatfs test demo \r\n");
   .....
}

我在main函数里面使用串口调试这一部分、、、、
发现每次只要使用到这一部分,关机开机都会出现白屏情况,而且在串口助手里面看不到打印的 “this is a fatfs test demo”语句,说明程序在这里就已经卡死了。。。
现在好了,把这两句都注释掉之后,开机关机就不会再出现白屏的现象了!
至于,为什么不能在开头使用这一句呢???还没弄明白....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-23 16:41:25 | 显示全部楼层
最后:
不能在程序一开始就使用 printf("\r\n this is a fatfs test demo \r\n"); 这个函数,不然会出现关机开机白屏的现象-----虽然第一次下载程序进去会正常显示图片,硬件调试也可以正常显示图片,但是关机在开机之后,肯定会出现白屏的情况!
PS:可以在显示图片语句执行完之后在使用 printf 这个函数,那样就会正常显示了,关机再开机也不会白屏了,串口助手也收到发过来的信息了。。。
另外:
也不能使用 bsp_bmp.c line16 的 #define BMP_DEBUG_PRINTF(FORMAT,...)  //printf(FORMAT,##__VA_ARGS__)  这个宏,不然烧写程序进去之后,直接白屏。。。
总之,使用串口这个功能的话,会出现意想不到的问题,至于为啥,还没找到原因。。。
欢迎各位指点一二,谢谢啦!!
回复 支持 反对

使用道具 举报

发表于 2014-8-23 17:57:21 | 显示全部楼层
chenyude 发表于 2014-8-23 16:41
最后:
不能在程序一开始就使用 printf("\r\n this is a fatfs test demo \r\n"); 这个函数,不然会出现关 ...

同时使用液晶和fsmc的时候,要先初始化液晶,再初始化串口,不然会出错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-23 21:12:51 | 显示全部楼层
谢谢指点!果然把串口初始化的位置换了就不会出现问题了呢!
回复 支持 反对

使用道具 举报

发表于 2015-3-20 16:11:49 | 显示全部楼层
谢谢楼主,,,我也遇到同样的问题
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-21 14:37 , Processed in 0.040343 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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