完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
|
|
LCDConf.c主要是配置与LCD相关的参数与函数。 LCD-TFT(液晶显示器——薄膜晶体管)显示器控制器提供并行数字 RGB (红色、绿色、蓝色)以及水平同步、垂直同步、像素时钟和数据使能信号,这些信号直接输出到不同 LCD和 TFT面板的接口。 层混合: |
|
|
|
|
|
LTDC编程步骤:
1、在 RCC寄存器中使能 LTDC 时钟。 2、按照面板数据表配置所需像素时钟。 3、配置同步时序:VSYNC、HSYNC、垂直和水平后沿、有效数据区域以及前沿时序。 4、配置 LTDC_GCR 寄存器中的同步信号和时钟极性。 5、必要时,配置 LTDC_BCCR寄存器中的背景色。 6、配置 LTDC_IER和LTDC_LIPCR 寄存器中的所需中断。 7、通过执行以下编程操作配置第 1/2层的参数: 1)、编程LTDC_LxWHPCR和LTDC_WVPCR 寄存器中的层窗口的水平和垂直位置。层窗口必须位于有效数据区域 2)、编程LTDC_LxPFCR 寄存器中的像素输入格式 3)、 编程LTDC_LxCFBAR寄存器中的颜色帧起始地址 4)、 编程LTDC_LxCFBLR寄存器中的颜色帧缓冲区的行长和间距 5)、 编程LTDC_LxCFBLNR寄存器中的颜色帧缓冲区的行数 6)、 必要时,在LTDC_LxCLUTWR寄存器中为 CLUT 加载 RGB值及其地址 7)、 必要时,分别在LTDC_LxDCCR和LTDC_LxBFCR寄存器中配置默认颜色和混合系数 8、使能 LTDC_LxCR寄存器中的第 1/2层,必要时使能 CLUT 。 9、必要时,可分别在LTDC_GCR和 LTDC_LxCKCR寄存器中使能抖动和色键。也可以实时使能这两个功能。 10、通过 LTDC_SRCR 寄存器将影子寄存器重载到活动寄存器中。 11、使能 LTDC_GCR 寄存器中的 LCD-TFT控制器。 12、除 CLUT外,所有层参数均可实时修改。新配置必须通过配置LTDC_SRCR 寄存器立即重载或在垂直消隐周期内重载。 |
|
|
|
|
|
如下,LTDC的初始化函数。对板子上的LCD进行初始化。
查看原代码 static void LCD_LL_LayerInit(U32 LayerIndex) { LTDC_LayerCfgTypeDef layer_cfg; if (LayerIndex < GUI_NUM_LAYERS) { /* Layer configuration */ layer_cfg.WindowX0 = 0; layer_cfg.WindowX1 = XSIZE_PHYS; layer_cfg.WindowY0 = 0; layer_cfg.WindowY1 = YSIZE_PHYS; layer_cfg.PixelFormat = LCD_LL_GetPixelformat(LayerIndex); layer_cfg.FBStartAdress = ((uint32_t)0xC0000000); layer_cfg.Alpha = 255; layer_cfg.Alpha0 = 0; layer_cfg.Backcolor.Blue = 0; layer_cfg.Backcolor.Green = 0; layer_cfg.Backcolor.Red = 0; layer_cfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; layer_cfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; layer_cfg.ImageWidth = XSIZE_PHYS; layer_cfg.ImageHeight = YSIZE_PHYS; HAL_LTDC_ConfigLayer(&hltdc, &layer_cfg, LayerIndex); /* Enable LUT on demand */ if (LCD_GetBitsPerPixelEx(LayerIndex) <= 8) { /* Enable usage of LUT for all modes with <= 8bpp*/ HAL_LTDC_EnableCLUT(&hltdc, LayerIndex); } } } |
|
|
|
|
|
static void LCD_LL_Init(void)
{ /* DeInit */ HAL_LTDC_DeInit(&hltdc); /* Set LCD Timings */ hltdc.Init.HorizontalSync = 40; hltdc.Init.VerticalSync = 9; hltdc.Init.AccumulatedHBP = 53; hltdc.Init.AccumulatedVBP = 11; hltdc.Init.AccumulatedActiveH = 283; hltdc.Init.AccumulatedActiveW = 533; hltdc.Init.TotalHeigh = 285; hltdc.Init.TotalWidth = 565; /* background value */ hltdc.Init.Backcolor.Blue = 0; hltdc.Init.Backcolor.Green = 0; hltdc.Init.Backcolor.Red = 0; /* Polarity */ hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; hltdc.Instance = LTDC; HAL_LTDC_Init(&hltdc); HAL_LTDC_ProgramLineEvent(&hltdc, 0); /* Enable dithering */ HAL_LTDC_EnableDither(&hltdc); /* Configure the DMA2D default mode */ hdma2d.Init.Mode = DMA2D_R2M; hdma2d.Init.ColorMode = DMA2D_RGB565; hdma2d.Init.OutputOffset = 0x0; hdma2d.Instance = DMA2D; if(HAL_DMA2D_Init(&hdma2d) != HAL_OK) { while (1); } /* Assert display enable LCD_DISP pin */ HAL_GPIO_WritePin(GPIOI, GPIO_PIN_12, GPIO_PIN_SET); /* Assert backlight LCD_BL_CTRL pin */ HAL_GPIO_WritePin(GPIOK, GPIO_PIN_3, GPIO_PIN_SET); } 在使用GUI之前,要GUI_Init();函数,对ST enWin 的库进行初始化,并使用WM_SetCreateFlags(WM_CF_MEMDEV);激活存储设备。 完成上述的工作,就可以在工程中调用ST emWin的API函数了。 |
|
|
|
|
|
如,在LCD上显示Hello World。 清屏,清除LCD为黑色的背景色。 查看原代码
设置GUI的字体为GUI_Font20_1。 查看原代码
这里有很多的字体可以使用的。 使用GUI_DispStringAt函数显示字符串。 |
|
|
|
|
|
这个函数的第一个参数是要显示的字符串,后两个参数是要显示字符串的位置。 查看原代码
程序运行结果: |
|
|
|
|
|
楼主分享的ST教程都不错。
|
|
|
|
|
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
238 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
629 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
552 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
552 浏览 0 评论
1074 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11764 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 02:15 , Processed in 0.628120 second(s), Total 51, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号