HAL库的STM32单片机LTDC驱动显示LCD屏幕

本文基于STM32H750核心,学习使用LTDC外设,用CubeMX创建HAL库工程,驱动显示LCD屏幕。LCD屏采用AT070TN83。

文末有工程链接。

目录

一、CubeMX生成工程

LCD屏的相关配置 ​编辑

LCD图层配置

 MPU配置

时钟树配置

工程配置

二、Keil配置

三、清屏函数

四、画点函数


一、CubeMX生成工程

 

LCD屏的相关配置

 

LCD屏的相关配置,可以查手册,具体的原理可以参考一下B站上的讲解:【LTDC—LCD】 ,这里不再做详细讲解。

LCD图层配置

 注意,这里的图片长宽不一定要等于屏幕长宽,开始和结束显示位置也可以变化,显存中数据格式这里用的是RGB565,即16位图,考虑到STM32H750的SRAM空间有限。

Display Type是和屏幕的接线方式,有18bits和16bits两种,这个屏幕用的是18Bits

 这里还开启几个GPIO脚接到屏幕上,用于一些其他控制。

 MPU配置

关于MPU的介绍,参考一下网站上其他文章,这里不做详细阐述,大同小异。

时钟树配置

工程配置

 

CubeMX配置完成,生成工程

二、Keil配置

找到MX_LTDC_Init()的定义

 

在MX_LTDC_Init()里初始化完成后,开启背光。也可以在主函数中开启背光。

三、清屏函数

LTDC的使用相当简单,我们已经设置好了显存位置,只需要在显存中放入我们需要显示的内容,LTDC就会自动把数据转换好发送给屏幕,让屏幕显示出来。

#define LCD_MemoryAdd   	0x24000000 		//	显存的起始地址

void LCD_Clear(uint16_t color)
{
	uint32_t i; 				// 计数变量

	while( LTDC->CDSR != 0X00000001);	// 判断 显示状态寄存器LTDC_CDSR 的第0位 VDES:垂直数据使能显示状态,可以避免撕裂效应
	for(i=0;i<(480*272);i++)	
	{
		*(__IO uint16_t*)( LCD_MemoryAdd + i*2 ) = color ; 	// 写入显存							
	}	 
	
}

四、画点函数

void LCD_DrawPoint(uint16_t x , uint16_t y , uint16_t color)
{

	*(__IO uint16_t*)( LCD_MemoryAdd + (x*2 + y*480*2) ) = color ; 	
}

由于一个像素点是两个字节的像素,所以要x*2,一行480个像素点,就是480*y*2个字节

用画点函数,画出一个矩形:

int x,y;

LCD_Clear(0xF800);

for(x = 0; x<100; x++)
{
   for(y = 0; y<200; y++)
   {
     LCD_DrawPoint(x , y , 0xFFFF);
   }
}

 

 

测试完成。

这里附上工程链接:提取码:v7f2  百度网盘下载。

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
STMicroelectronics的STM32F4系列微控制器是一款高性能、低功耗的MCU芯片。HAL(Hardware Abstraction Layer)库是STMicroelectronics提供的一种软件库,用于简化STM32系列微控制器的开发流程。 SPI(Serial Peripheral Interface)是一种通信协议,可以用于在微控制器和外设之间进行串行数据传输。LCD(Liquid Crystal Display)是一种常见的显示器件,用于显示图像和文本。使用STM32F4 HAL库驱动SPI LCD可以实现在STM32F4微控制器上控制LCD屏幕的功能。 首先,我们需要在STM32F4的硬件上连接SPI总线和LCD屏幕。通过阅读相关的硬件文档,我们可以了解到哪些引脚是SPI总线的主线和从线,以及如何正确连接LCD屏幕。 接下来,我们需要编写代码来初始化SPI总线和LCD屏幕。使用HAL库的相关函数,我们可以在代码中初始化SPI总线和配置相关的参数,如数据传输速率、时钟相位、数据位宽等。 在SPI总线初始化完成后,我们可以使用HAL库的函数来发送和接收数据。通过编写相应的代码,我们可以将需要显示的图像数据或文本发送到LCD屏幕上。 最后,我们需要编写代码来进行LCD屏幕的控制。这包括设置显示模式(如亮度、对比度等)、光标位置和显示字符等。HAL库提供了一系列函数,可以简化这些操作的实现。 总之,使用STM32F4 HAL库驱动SPI LCD可以方便地在STM32F4微控制器上控制LCD屏幕显示。我们只需要正确连接硬件,并编写相应的代码来初始化SPI总线和LCD屏幕,然后使用HAL库的函数进行数据传输和屏幕控制即可。这样可以大大简化LCD驱动的开发流程,节省开发时间和提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天师电通电容爆破工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值