STM32CubeMX学习笔记——STM32H743_LTDC、DMA2D

Github

https://github.com/HaHaHaHaHaGe/Planof2019_half/tree/master/Course_Project/STM32H7/Class05_LTDC

功能简述

从DRAM中读取数据刷新使用LTDC接口的RGB屏幕
并使用DMA2D更新DRAM中的数据
注:部分驱动函数来自原子H7,LTDCRGB屏幕实验

STM32CubeMX配置

STM32CubeMX版本:4.27.0
配置流程:
Pinout界面选择并开启LTDC与DRAM
Clock Configuration配置时钟树
Configuration界面配置System
生成工程

Pinout配置

在这里插入图片描述
配置LTDC的引脚与屏幕显示方式以及DRAM

Clock Configuration配置

在这里插入图片描述
配置DRAM与LTDC与系统的时钟

Configuration

在这里插入图片描述
左侧主要系统功能的开启,或中间软件层功能的开启(如:RTOS、JPEG解码器,文件系统等)
右侧是系统及外设模块的具体配置

GPIO

在这里插入图片描述
屏幕背光控制

FMC

在这里插入图片描述
在这里插入图片描述

LTDC

在这里插入图片描述
配置屏幕相关参数
在这里插入图片描述
配置图层相关参数
在这里插入图片描述
配置IO速度等级

扫描二维码关注公众号,回复: 4466260 查看本文章

DMA2D

在这里插入图片描述
在这里插入图片描述

NVIC

在这里插入图片描述
在这里插入图片描述

代码部分

代码过多仅展示部分,其余在github

main.c

void callback(struct __DMA2D_HandleTypeDef * hdma2d)
{
	j = 40000000/2-1;
	while(j--);
	i++;
	if(i == 6)
		i=1;
	
	HAL_DMA2D_Start_IT(hdma2d,Bank5_SDRAM_ADDR + 0x0012c000*i,Bank5_SDRAM_ADDR,1024,600);
}
 /* USER CODE BEGIN 2 */
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,1);
	SDRAM_Initialization_Sequence();
	hdma2d.XferCpltCallback = callback;
	
	//Layer0 => RGB565
	i = (1024*600);
		while(i--)
			*(unsigned short*)(Bank5_SDRAM_ADDR + 0x0012c000*1 + 2*i) = 0xf800;
	i = (1024*600);
		while(i--)
			*(unsigned short*)(Bank5_SDRAM_ADDR + 0x0012c000*2 + 2*i) = 0x07e0;
	i = (1024*600);
		while(i--)
			*(unsigned short*)(Bank5_SDRAM_ADDR + 0x0012c000*3 + 2*i) = 0x001f;
	i = (1024*600);
		while(i--)
			*(unsigned short*)(Bank5_SDRAM_ADDR + 0x0012c000*4 + 2*i) = 0xf81f;
	i = (1024*600);
		while(i--)
			*(unsigned short*)(Bank5_SDRAM_ADDR + 0x0012c000*5 + 2*i) = 0x07ff;
		
		
	//Layer1 => ARGB
	i = (512*300);
	while(i--)
	{
		*(unsigned short*)(Bank5_SDRAM_ADDR + 0x01000000 + 4*i) = 0xffff;			//GB
		*(unsigned short*)(Bank5_SDRAM_ADDR + 0x01000000 + 4*i + 2) = 0xa0ff; //AR
	}
	i=0;
	HAL_DMA2D_Start_IT(&hdma2d,Bank5_SDRAM_ADDR + 0x0012c000*1,Bank5_SDRAM_ADDR,1024,600);
  /* USER CODE END 2 */

猜你喜欢

转载自blog.csdn.net/weixin_41738734/article/details/84332443