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的学习还有很长的路要走啊。
再把程序贴一下:
stm32f429 LCD.zip
(599.2 KB, 下载次数: 712)
|