野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11942|回复: 7

关于从串口读取数据由液晶屏显示的问题,求高手解答

[复制链接]
发表于 2015-2-21 00:19:56 | 显示全部楼层 |阅读模式
在学习FSMC液晶显示的过程中,我想实现用电脑经串口向stm32发送数据,再由液晶屏显示的功能
在编写main.c的初始化串口和FSMC的过程中我发现,当这样写时
USART1_Config();
NVIC_Configuration();
LCD_Init();
LCD_Clear(0, 0, 240, 320, BACKGROUND);
液晶屏不能正常工作,所有的像素都亮了
而将lcd和串口初始化两句交换位置时,则液晶屏工作正常,正确代码如下
LCD_Init();
LCD_Clear(0, 0, 240, 320, BACKGROUND);
USART1_Config();
NVIC_Configuration();
关于FSMC的初始化语句必须写在串口的前面吗?为什么?
希望高手解答,万分感谢,祝大家春节愉快!
回复

使用道具 举报

发表于 2015-2-21 11:06:55 | 显示全部楼层
时序问题,就像是你传球给一个人它未准备好你就传球给它它就不一定能接到
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-21 22:36:59 | 显示全部楼层
代理电 发表于 2015-2-21 11:06
时序问题,就像是你传球给一个人它未准备好你就传球给它它就不一定能接到

谢谢!在执行过程中确实会涉及先后问题,但是这四句都是初始化,两个不同外设的初始化在顺序上不应有先后吧?
回复 支持 反对

使用道具 举报

发表于 2015-2-22 15:32:49 | 显示全部楼层
LCD_Clear(0, 0, 240, 320, BACKGROUND)
这个自定义函数中是否包初始化,没完整成序不太好判断能发出来吗?
回复 支持 反对

使用道具 举报

发表于 2015-2-23 08:27:54 | 显示全部楼层
本帖最后由 11kxmx 于 2015-2-23 08:29 编辑
代理电 发表于 2015-2-21 11:06
时序问题,就像是你传球给一个人它未准备好你就传球给它它就不一定能接到


我也遇到过类似问题,就是想把ADC采集到的数据显示在液晶屏上,结果是白屏(整屏灰色),火哥让我把两个初始化语句交换顺序,居然成功了,但是不知为什么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-23 19:02:20 | 显示全部楼层
代理电 发表于 2015-2-22 15:32
LCD_Clear(0, 0, 240, 320, BACKGROUND)
这个自定义函数中是否包初始化,没完整成序不太好判断能发出来吗 ...

谢谢了!
void LCD_Clear(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color)
{
        uint32_t i = 0;
       
        /* column address control set */
        LCD_ILI9341_CMD(0X2A);
        LCD_ILI9341_Parameter( x >> 8 );         /* Ïȸß8λ£¬È»ºóµÍ8λ */
        LCD_ILI9341_Parameter( x & 0xff );                 /* column start   */
        LCD_ILI9341_Parameter( (x+width-1) >> 8 );   /* column end   */
        LCD_ILI9341_Parameter( (x+width-1) & 0xff );
       
        /* page address control set */       
  LCD_ILI9341_CMD(0X2B);                              
        LCD_ILI9341_Parameter( y >> 8 );                        /* page start   */
        LCD_ILI9341_Parameter( y & 0xff );
        LCD_ILI9341_Parameter( (y+height-1) >> 8);  /* page end     */
        LCD_ILI9341_Parameter( (y+height-1) & 0xff);
       
        /* memory write */
        LCD_ILI9341_CMD(0x2c);       
               
        for( i=0; i < width*height; i++ )
        {
                LCD_WR_Data( color );
                //Delay(0x0FFf);
        }       
}
回复 支持 反对

使用道具 举报

发表于 2015-2-23 21:53:14 | 显示全部楼层
目前来看是固件库的BUG
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-24 10:24:36 | 显示全部楼层
代理电 发表于 2015-2-23 21:53
目前来看是固件库的BUG

谢谢啦!祝你新年愉快!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 23:44 , Processed in 0.067455 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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