硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5816|回复: 5
收起左侧

用安富莱STM32F429LCD显示的例子

[复制链接]

2

主题

14

回帖

2

积分

新手上路

加油

积分
2
发表于 2015-3-2 16:25:27 | 显示全部楼层 |阅读模式
用安富莱STM32F429LCD显示的例子,我自己在里面调用画矩形框函数、调用清屏函数,都没得显示效果,它还是保持里面一直显示的效果,请问这怎么回事呢?
调用如下代码
void LCD_Config_Init(void)
{
    /* LCD Configuration */
    LCD_Config();

    /* Enable Layer1 */
    LTDC_LayerCmd(LTDC_Layer1, ENABLE);
  
    /* Reload configuration of Layer1 */
    LTDC_ReloadConfig(LTDC_IMReload);
  
    /* Enable The LCD */
    LTDC_Cmd(ENABLE);
    LCD_SetTextColor(LCD_COLOR_GREY);
    LCD_DrawRect(30,30,20,20);
    LCD_SetBackColor(LCD_COLOR_BLUE);
    LCD_Clear(LCD_COLOR_BLUE);
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2015-3-2 16:54:45 | 显示全部楼层
楼主,你好像搞错了,我们还没有发不过F429的显示例子,F429的板子还没有上市。
回复

使用道具 举报

3

主题

14

回帖

23

积分

新手上路

积分
23
发表于 2015-3-2 19:39:40 | 显示全部楼层
楼主,STM32F429 Discovery Demo例程中有个函数LCD_SetLayer(),该函数设置全局变量CurrentLayer为LCD_BACKGROUND_LAYER或LCD_FOREGROUND_LAYER,如果你没有调用该函数,则程序默认是选择LCD_BACKGROUND_LAYER作为当前层的。
而在你的程序中使能了Layer1,但却又没有调用LCD_SetLayer()函数,所以你当前的所有操作都是在Background中的,结果显示时都被Layer1给覆盖了,所以你看不到你的清屏操作。
回复

使用道具 举报

3

主题

14

回帖

23

积分

新手上路

积分
23
发表于 2015-3-2 19:50:27 | 显示全部楼层

回 hexiaolong20 的帖子

hexiaolong20:楼主,STM32F429 Discovery Demo例程中有个函数LCD_SetLayer(),该函数设置全局变量CurrentLayer为LCD_BACKGROUND_LAYER或LCD_FOREGROUND_LAYER,如果你没有调用该函数,则程序默认是选择LCD_BACKGROUND_LAYER作为当前层的。
而在你的程序中使能了Layer1,但却又没有调用LCD_SetLa .. (2015-03-02 19:39)
针对以上回复纠正一下,原因不是像上面说的,而是main.c中的LCD_Config()函数设置的FrameBuffer缓冲区和stm32f429i_discovery_lcd.c中的LCD_LayerInit()设置的缓冲区不是同一个缓冲区。所以如果你要是用Demo提供的LCD_Clear()就必须是用LCD_Init()和LCD_LayerInit()来初始化,而不应该用LCD_Config()来初始化。
回复

使用道具 举报

2

主题

14

回帖

2

积分

新手上路

加油

积分
2
 楼主| 发表于 2015-3-3 15:37:41 | 显示全部楼层

回 hexiaolong20 的帖子

hexiaolong20:针对以上回复纠正一下,原因不是像上面说的,而是main.c中的LCD_Config()函数设置的FrameBuffer缓冲区和stm32f429i_discovery_lcd.c中的LCD_LayerInit()设置的缓冲区不是同一个缓冲区。所以如果你要是用Demo提供的LCD_Clear()就必须是用LCD_Init()和LCD_LayerInit()来初始化,而 .. (2015-03-02 19:50)
谢谢,清屏的可以了,但是我想在里面调用   
  LCD_SetTextColor(LCD_COLOR_GREY);
    LCD_DrawRect(30,30,40,40);
这些库函数,但LCD屏还是保持清屏的颜色状态呢?前面的程序只是将LCD_Config()替换LCD_Init()和LCD_LayerInit()。
回复

使用道具 举报

2

主题

14

回帖

2

积分

新手上路

加油

积分
2
 楼主| 发表于 2015-3-3 18:29:31 | 显示全部楼层
/* LCD Configuration */
    LCD_Init();
    LCD_LayerInit();

    /*选择哪个显示层*/
    LCD_SetLayer(LCD_FOREGROUND_LAYER);
  
    /* Enable The LCD */
    LTDC_Cmd(ENABLE);
按照这个方式去配置就可以了!
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 07:17 , Processed in 0.297946 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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