完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这里有一个层可编程参数。 最多可单独使能、禁止和配置两个层。层显示顺序固定,即自下而上。如果使能两个层,则层 2 为顶部显示窗口。 可为每个层定位和调整窗口大小,各个层必须位于有效显示区域内。使用到的是LTDC_LxWHPCR 和 LTDC_WVPCR寄存器 两层可按照 LTDC_LxBFCR寄存器中配置的混合系数进行混合。 混合顺序固定,即由下至上。如果使能了两层,首先第 1 层将与背景色混合,随后第 2 层与 第 1 层和背景的混合颜色结果再次混合。 |
|
相关推荐
|
|
两层时的配置与一层时的配置很类似。
第一图层配置 位置从(0,0)到(320,240) 图像地址为L8_320x240 图像大小为320*240 查看原代码 pLayerCfg.WindowX0 = 0; pLayerCfg.WindowX1 = 320; pLayerCfg.WindowY0 = 0; pLayerCfg.WindowY1 = 240; /* Pixel Format configuration*/ pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_L8; /* Start Address configuration : frame buffer is located at FLASH memory */ pLayerCfg.FBStartAdress = (uint32_t)&L8_320x240; /* Alpha constant (255 totally opaque) */ pLayerCfg.Alpha = 255; /* Default Color configuration (configure A,R,G,B component values) */ pLayerCfg.Alpha0 = 0; pLayerCfg.Backcolor.Blue = 0; pLayerCfg.Backcolor.Green = 0; pLayerCfg.Backcolor.Red = 0; /* Configure blending factors */ pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; /* Configure the number of lines and number of pixels per line */ pLayerCfg.ImageWidth = 320; pLayerCfg.ImageHeight = 240; 第一图层配置 |
|
|
|
|
|
位置从(160,32)到(480,272)
图像地址为RGB565_320x240 图像大小为320*240 查看原代码 pLayerCfg1.WindowX0 = 160; pLayerCfg1.WindowX1 = 480; pLayerCfg1.WindowY0 = 32; pLayerCfg1.WindowY1 = 272; /* Pixel Format configuration*/ pLayerCfg1.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; /* Start Address configuration : frame buffer is located at FLASH memory */ pLayerCfg1.FBStartAdress = (uint32_t)&RGB565_320x240; /* Alpha constant (255 totally opaque) */ pLayerCfg1.Alpha = 200; /* Default Color configuration (configure A,R,G,B component values) */ pLayerCfg1.Alpha0 = 0; pLayerCfg1.Backcolor.Blue = 0; pLayerCfg1.Backcolor.Green = 0; pLayerCfg1.Backcolor.Red = 0; /* Configure blending factors */ pLayerCfg1.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA; pLayerCfg1.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA; /* Configure the number of lines and number of pixels per line */ pLayerCfg1.ImageWidth = 320; pLayerCfg1.ImageHeight = 240; |
|
|
|
|
|
以下程序,将图层1移动到图层2的位置,简单的动画
查看原代码 for (index = 0; index < 32; index++) { /* calculate new picture position */ PicturesPosition(&Xpos1, &Ypos1, &Xpos2, &Ypos2, (index+1)); /* reconfigure the layer1 position without Reloading*/ HAL_LTDC_SetWindowPosition_NoReload(&LtdcHandle, Xpos1, Ypos1, 0); /* reconfigure the layer2 position without Reloading*/ HAL_LTDC_SetWindowPosition_NoReload(&LtdcHandle, Xpos2, Ypos2, 1); /*Ask for LTDC reload within next vertical blanking*/ ReloadFlag = 0; HAL_LTDC_Reload(&LtdcHandle,LTDC_RELOAD_VERTICAL_BLANKING); while(ReloadFlag == 0) { /* wait till reload takes effect (in the next vertical blanking period) */ } } 以下程序,还原两个图层的位置。最后的运行结果就是两个图层上的两个图像反复变换位置。 |
|
|
|
|
|
查看原代码
for (index = 0; index < 32; index++) { /* calculate new picture position */ PicturesPosition(&Xpos2, &Ypos2, &Xpos1, &Ypos1, (index+1)); /* reconfigure the layer1 position without Reloading*/ HAL_LTDC_SetWindowPosition_NoReload(&LtdcHandle, Xpos1, Ypos1, 0); /* reconfigure the layer2 position without Reloading*/ HAL_LTDC_SetWindowPosition_NoReload(&LtdcHandle, Xpos2, Ypos2, 1); /*Ask for LTDC reload within next vertical blanking*/ ReloadFlag = 0; HAL_LTDC_Reload(&LtdcHandle,LTDC_RELOAD_VERTICAL_BLANKING); while(ReloadFlag == 0) { /* wait till reload takes effect (in the next vertical blanking period) */ } } |
|
|
|
|
|
690 浏览 0 评论
735 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
624 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1099 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1092 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11794 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 07:14 , Processed in 0.613125 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号