Stm32F429最突出的亮点应该就是自带LCD驱动器,看了一下官方例程stm32f429i_discovery_lcd.c里有关于液晶的操作,果然牛X,很多操作函数都没见过,比如有关层的函数和PolyLine函数,上网查了一下才发现其实这些函数st在之前的各种EVAL板子的例程中都有,要是早早能拥有一块EVAL板子就好了(就是没money啊)。程序再下面,希望大家批评指正。
为了方便,直接Copy官方历程中的stm32f429i_discovery_lcd.c和stm32f429i_discovery_lcd.h以及fonts.c和fonts.h文件到之前做好的工程摸板当中。
Tips:这里最好新建一个文件夹,方便程序的管理。
打开stm32f429i_discovery_lcd.h发现里面还包括了stm32f429i_discovery_sdram.h,所以就再把官方例程里的stm32f429i_discovery_sdram.h和stm32f429i_discovery_sdram.c再Copy到我们的工程模板当中,这里先不追究为什么要使用sdram的文件,首先我怕麻烦,其次觉得sdram迟早要用到,那就先拷进来再说。
完成了以上两步后,就可以对液晶屏进行操作了,有关于液晶屏的一些基本操作函数在stm32f429i_discovery_sdram.h中都有,我们只需要调用函数就可以了。在对液晶使用前要先初始化并设置层,具体的设置方法如下。
/*Initialize the LCD */
LCD_Init();
LCD_LayerInit();
/* Enablethe LTDC */
LTDC_Cmd(ENABLE);
初始化包括液晶初始化,层的初始化,LTDC的使能,要让液晶屏显示的话还要进行层设置。
/* Set LCDBackground Layer */
LCD_SetLayer(LCD_BACKGROUND_LAYER);
/* Clearthe Background Layer */
LCD_Clear(LCD_COLOR_WHITE);
/*Configure the transparency for background */
LCD_SetTransparency(255);
LCD_SetTextColor(LCD_COLOR_BLUE);
LCD_DrawFullCircle(85, 55, 52);
LCD_SetTextColor(LCD_COLOR_RED);
LCD_DrawFullCircle(85, 160, 52);
LCD_SetTextColor(LCD_COLOR_YELLOW);
LCD_DrawFullCircle(85, 265, 52);
/* Set LCDForeground Layer */
LCD_SetLayer(LCD_FOREGROUND_LAYER);
/*Configure the transparency for foreground */
LCD_SetTransparency(127);
/* Clearthe Foreground Layer */
LCD_Clear(LCD_COLOR_WHITE);
LCD_SetTextColor(LCD_COLOR_RED);
LCD_DrawFullCircle(155, 55, 52);
LCD_SetTextColor(LCD_COLOR_YELLOW);
LCD_DrawFullCircle(155, 160, 52);
LCD_SetTextColor(LCD_COLOR_BLUE);
LCD_DrawFullCircle(155, 265, 52);
上面程序的意思是:首先,先设置背景层,并且设置颜色,设置透明度,画上三个圆,再设置顶层,设置透明度,再画三个圆。
之前实验过,如果只设置一个层液晶屏是不会显示的,如果你要是只想用一个层的话,可以把背景层设置成全透明就可以了,这里透明度可以从0到255调节。
上面程序分别在两个层画6个圆是为了让两个圆之间有颜色叠加效果,如图。
呵呵,效果还是很不错的嘛,一边看着这六个圆一边想:看来对于stm32的学习还有很长的路要走啊。
再把程序贴一下: