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->