硬汉嵌入式论坛

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

[LTDC] stm32h7r7的ltdc驱动

[复制链接]

4

主题

3

回帖

15

积分

新手上路

积分
15
发表于 2024-10-8 15:58:38 | 显示全部楼层 |阅读模式

正点原子关于ltdc的例程当中,对于ltdc层的设置,他把X的起始位置和终点位置都设为0,可以正常显示。
但是这不合理啊,终点位置应该是lcdltdc.pwidth才对啊,可是我这样设置却是花屏

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-10-8 16:09:34 | 显示全部楼层
帮顶,没用过H7R7,这个是H750/H743双图层配置API,供参考

[C] 纯文本查看 复制代码
/*
*********************************************************************************************************
*	函 数 名: _GetPixelformat
*	功能说明: 获取图层1或者图层2使用的颜色格式
*	形    参: LayerIndex  图层
*	返 回 值: 颜色格式
*********************************************************************************************************
*/
static void LCD_LL_LayerInit(U32 LayerIndex) 
{  
	LTDC_LayerCfgTypeDef  layer_cfg;  
	static uint32_t       LUT[256];
	uint32_t              i;

	if (LayerIndex < GUI_NUM_LAYERS)
	{
		/* 窗口显示区设置 */ 
		layer_cfg.WindowX0 = 0;
		layer_cfg.WindowX1 = g_LcdWidth;
		layer_cfg.WindowY0 = 0;
		layer_cfg.WindowY1 = g_LcdHeight;
		
		/* 配置颜色格式 */ 
		layer_cfg.PixelFormat = _GetPixelformat(LayerIndex);
		
		/* 显存地址 */
		layer_cfg.FBStartAdress = layer_prop[LayerIndex].address;
		
		/* Alpha常数 (255 表示完全不透明) */
		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 = g_LcdWidth;
		layer_cfg.ImageHeight = g_LcdHeight;

		/* 配置图层1 */
		HAL_LTDC_ConfigLayer(&hltdc, &layer_cfg, LayerIndex);

		/* 使能LUT */
		if (LCD_GetBitsPerPixelEx(LayerIndex) <= 8)
		{
			HAL_LTDC_EnableCLUT(&hltdc, LayerIndex);
		}
		else
		{
			/*  AL88模式(16bpp) */
			if (layer_prop[LayerIndex].pColorConvAPI == GUICC_88666I)
			{
				HAL_LTDC_EnableCLUT(&hltdc, LayerIndex);

				for (i = 0; i < 256; i++)
				{
					LUT[i] = LCD_API_ColorConv_8666.pfIndex2Color(i);
				}
				
				HAL_LTDC_ConfigCLUT(&hltdc, LUT, 256, LayerIndex);
			}
		}
	}  
}
回复

使用道具 举报

4

主题

3

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2024-10-8 16:13:55 | 显示全部楼层
怎么发图片啊,正点原子的h7r7例程代码就是把WindowX0和WindowX1都设置成0,然后把WindowY0设置成 g_LcdWidth
回复

使用道具 举报

4

主题

3

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2024-10-8 16:19:44 | 显示全部楼层
不会发图片。
正点原子的h7r7例程中,把WindowX0和WindowX1都设置为0,把WindowY0设置为g_LcdWidth了
回复

使用道具 举报

692

主题

3576

回帖

5677

积分

论坛元老

积分
5677
发表于 2024-10-8 22:12:04 | 显示全部楼层
疯狂单片机 发表于 2024-10-8 16:19
不会发图片。
正点原子的h7r7例程中,把WindowX0和WindowX1都设置为0,把WindowY0设置为g_LcdWidth了

估计 正点原子 他们的默认的 lcd 默认使用的是 竖屏 模式, 如果你的是恒频的话估计需要做相应的修改吧
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2024-10-9 09:20:17 | 显示全部楼层
疯狂单片机 发表于 2024-10-8 16:13
怎么发图片啊,正点原子的h7r7例程代码就是把WindowX0和WindowX1都设置成0,然后把WindowY0设置成 g_LcdWid ...

高级编辑,手动上传就可以了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 18:23 , Processed in 0.045600 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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