使用FSMC连接TFT LCD

今天尝试修改LCD厂商自带的LCD标准库程序到HAL库中使用。

什么是FSMC

stm32的FSMC是其内部的一种接口,它可以映射外部的同步、异步存储器,存储卡,LCD模块等。它通过片选信号和外设进行通讯,所以同一时间只能和一种外设通讯。它拥有4个区(4*64MB),称为bank1-4,每个区内部又分成4个子区,每个区映射的外部器件不同,

使用FSMC和LCD进行连接的项目演练

首先得选择区域,外设选择LCD Interface,然后查看LCD的管脚图,找到它的片选引脚,填入LCD Register Select中,数据位设置为16bit,,设置允许读写,其他设置正常设置即可,这样就完成了初始化,生成代码。

具体配置如图所示:

图 1 LCD具体模式配置

注意:红色标注处为自己开发板设置的,可以查看自己开发板的原理图查看这一位。

图 2 FSMC参数设置

生成的代码并不能运行,需要将LCD厂提供的LCD驱动程序加入我们的代码中,主要是lcd.c,lcd.h和font.h,前两个主要是LCD的驱动程序,最后一个是字模代码,其中包括几种不同字号的ASCⅡ码。将厂商提供的文件复制到我们这个文件目录下,然后在keil中将这个文件中的lcd.c添加到函数中,将头文件声明。

大多数厂商提供的驱动程序是标准库的,我们需要对其进行改写,主要是一些定义的书写格式,更改就好,然后注释掉头文件中的SysYick.h和usart.h(这两个一个是延时函数,一个是串口输出函数),最后将延时函数改成HAL_Delay(),串口输出函数(printf)直接注释,这部分串口输出主要是用来测试LCD屏幕的,这部分对我们的LCD使用不影响,所以可以直接注释掉。然后LCD代码书写时大量应用了u8,u16等简写代码,这里可以将其一个一个改为正规的uint8_t等,或者可以在lcd.h文件中声明,减少我们的修改量:

#define u16 uint16_t

#define u8 uint8_t

#define u32 uint32_t

#define vu16 __IO uint16_t

#define vu8 __IO uint8_t

#define vu32 __IO uint32_t

再将LCD初始化中的和GPIO、FSMC有关的部分注释掉。这样就完成了整个代码的初始化。

在main.h中添加lcd.h,在lcd.h中也添加main.h。

然后再在主函数中调用LCD初始化函数:LCD_Init(),将代码烧录进开发板中,观察到背光亮起即可。然后可以简单使用厂商提供的函数在屏幕上书写字符串,数字等。或者自己根据这些函数写一些新的函数。​

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值