5-FSMC初始化结构体
关于FSMC只介绍关键参数:
①FSMC结构初始化主要分为两个模块,时序初始化、整体FSMC初始化
1- FSMC结构初始化主要分为两个模块,时序初始化、整体FSMC初始化
配置好时序结构体后,再在整体初始化结构体中,进行地址传递,一起进行初始化
以上,fsmc对应LCD显示屏控制的核心逻辑已经介绍完毕,下面进入代码模块
三、代码模块
1,整体逻辑
①初始化对应GPIO端口
②初始化FSMC
③初始化LCD模块
④初始化发送数据、发送指令、接受数据模块
⑤显示窗口开辟
⑥RGB888数据转化RGB565函数建立
⑦矩形图形显示
ps:能够显示一个矩形,基本等于可以进行LCD驱动了,至于显示斜直线、圆等图形全部都是数学关系的转化;
2,正式进入代码模块
①初始化对应GPIO端口
FSMC模块引脚全部设置为复用推挽输出;
背光模块和复位不属于FSMC,属于GPIO模块,直接推挽输出;
void lcd_gpio_config(void)
{
//开启GPIO时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD
|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOG,ENABLE);
//配置GPIO
//先配置FSMC数据信号线 D0-D15 ,复用推挽
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_14;
GPIO_Init( GPIOD, &GPIO_InitStruct);//D0
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_15;
GPIO_Init( GPIOD, &GPIO_InitStruct);//D1
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
GPIO_Init( GPIOD, &GPIO_InitStruct);//D2
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_1;
GPIO_Init( GPIOD, &GPIO_InitStruct);//D3
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7;
GPIO_Init( GPIOE, &GPIO_InitStruct);//D4
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;
GPIO_Init( GPIOE, &GPIO_InitStruct);//D5
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
GPIO_Init( GPIOE, &GPIO_InitStruct);//D6
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
GPIO_Init( GPIOE, &GPIO_InitStruct);//D7
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_11;
GPIO_Init( GPIOE, &GPIO_InitStruct);//D8
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_12;
GPIO_Init( GPIOE, &GPIO_InitStruct);//D9
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13;
GPIO_Init( GPIOE, &GPIO_InitStruct);//D10
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_14;
GPIO_Init( GPIOE, &GPIO_InitStruct);//D11
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_15;
GPIO_Init( GPIOE, &GPIO_InitStruct);//D12
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;
GPIO_Init( GPIOD, &GPIO_InitStruct);//D13
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
GPIO_Init( GPIOD, &GPIO_InitStruct);//D14
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
GPIO_Init( GPIOD, &GPIO_InitStruct);//D15
//配置相应FSMC控制引脚,复用推挽模式
// *