最近在钻研一些显示屏,研究到了lcd显示屏,然后入手了一块f407的开发板,但是店家给的资料有点怪,是keil4的工程,我一打开显示缺少f407vexxx,keil现在还巨慢,然后我到处找资料,发现网上大多是vgt6,又去各家vet6的店铺区找资料。折腾了几天终于把lcd点亮了,然后把标准库的代码移植到了hal库上面
开发板:
1.cubemx配置:
(1)基础配置:
没啥好说的,之间配置即可,我这里用的是stlink调试器,频率直接拉满,时钟都是外部晶振。
时钟配置
接下来是这次工程的重点FSMC的配置:
首先我们对照原理图,看一下引脚的配置
对照原理图我们可以发现,这款开发板使用的是NE1,A18,同时原理图显示上面有16个数据位,这样我们就可以对TFT的基础管脚进行配置 ,具体配置如下:
剩下的配置我们需要对照标准库的代码进行配置(可以提前用烧录标准库的代码检查一下代码是否有问题)
我们先将下面三个文件复制到自己的文件中
打开文件直接找到LCD_Init函数FSMC配置的位置
对照代码和注释 我们在cubemx上继续配置
最后我们配置一下背光端口,即LCD_BL
对照原理图我们发现是连接到了单片机的PB1引脚,简单配置一下即可
这样我们cubemx就配置的差不多了,最后来点收尾:
cubemx配置结束,生成代码
2.keil文件修改:
lcd.c:
首先开头几个头文件串口和延时可以去掉,(串口可以自己在cubemx上配置,延时直接用自带的hal_delay就行了)
然后去lcd_Init函数把FSMC配置函数全部删掉,这部已经配置好了
下图这部分也要删掉,这部分之前没在意结果显示出现问题
在它上面有个读取ID的函数,把LCD_WR_REG(0X04);改为LCD_WR_REG(0Xd3);(9341读取ID指令为0xd3)下面那个串口发送以及修改id的代码可以直接注释掉,这一部分最后修改前后对比
修改前:
修改后:
接着是下面的一些列初始代码,下图这段注释掉,改用下面原先注释掉的代码(原先注释掉的代码为9341初始化的代码)
同时注意一下这两行代码
然后修改一下背光
修改之后:
(LCD_BL_GPIO_Port是在cubemx中自定义的,也可以使用PB1来点亮)
这两段代码控制着LCD的扫描方向,我最开始显示镜像就是这里的问题,可以改成0x08,自定义的话可以看汉化的手册,虽然只有命令的解释,但也够用了
lcd.h文件中只需要把sys.h文件删除即可,接着我们可以把原来代码中类型声明全部换掉(u16这些声明是在sys.h中声明的)选中ctrl+f替换即可,特别注意的是u16不要直接替换,先替换vu16为volatile uint16_t vu32也是同理.
源代码中的延时函数:ms级延时用hal_delay,us级延时用hal_delay(1)替换.
3.验证
在main.c函数中验证
最终效果:
程序源码:
cubemx移植版 链接:https://pan.baidu.com/s/1PFkykgRxg-PBlFd-WrW3XQ?pwd=mz44
提取码:mz44
开发板商家例程:百度网盘 请输入提取码