STM32学习--FMSC 和 LCD(3)

本文介绍了如何在STM32中使用FMSC驱动LCD,包括FMSC的初始化、LCD的底层操作函数以及显示相关操作。初始化步骤涉及硬件时钟、GPIO配置和FSMC寄存器设置。LCD底层操作包括写寄存器、写数据、读数据等函数。显示操作部分涵盖描点、画形状和矩形填充等基本功能。
摘要由CSDN通过智能技术生成

4 软件编程
4.1 底层操作函数
底层操作函数主要包括:
FMSC_init:包括硬件时钟、GPIO和FMSC的初始化;
LCD_init:按9341的说明书对其进行初始化,都有现成的程序代码;
void LCD_WR_REG(u16 regval):写寄存器值函数
void LCD_WR_DATA(u16 data):写数据函数;
u16 LCD_RD_DATA(void) :读数据函数
void LCD_WriteReg(u16 LCD_Reg, u16 LCD_RegValue):写寄存器内容函数
u16 LCD_ReadReg(u16 LCD_Reg) :读寄存器内容函数
void LCD_WriteRAM_Prepare(void):开始写GRAM函数:
void LCD_WriteRAM(u16 RGB_Code):写GRAM函数。

FMSC_init();
{
打开FMSC的时钟,其在AHB时钟域中;
打开对应GPIO的时钟
将FMSC对应的端口设为复用推挽输出;
背光端口可直接设为推挽输出,在使用FSMC时,端口不需重映射;

对FMSC相应寄存器进行配置,可以使用MDK中提供的结构及函数进行初始化
FSMC_NORSRAMInitTypeDef
FSMC_NORSRAMTimingInitTypeDef
FSMC_NORSRAMTimingInitTypeDef

也可以直接对上节说到的寄存器直接操作,具体值见上节的寄存器描述。源码如下:

    //寄存器清零
    //bank1有NE1~4,每一个有一个BCR+TCR,所以总共八个寄存器。
    //这里我们使用NE4 ,也就对应BTCR[6],[7]。                   
    FSMC_Bank1->BTCR[6]=0X00000000;
    FSMC_Bank1->BTCR[7]=0X00000000;
    FSMC_Bank1E->BWTR[6]=0X00000000;
    //操作BCR寄存器  使用异步模式
    FSMC_Bank1->BTCR[6]|=1<<12;     //存储器写使能
    FSMC_Bank1->BTCR[6]|=1<<14;     //读写使用不同的时序
    FSMC_Bank1->BTCR[6]|=1<<4;      //存储器数据宽度为16bit         
    //操作BTR寄存器  
    //读时序控制寄存器                              
    FSMC_Bank1->BTCR[7]|=0<<28;     //模式A                                    
    FSMC_Bank1->
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值