单片机学习小组
直播中

李慧

7年用户 875经验值
私信 关注

请问ILI9341如何控制显示屏输出?

请问ILI9341如何控制显示屏输出?

回帖(1)

傅琦

2022-2-22 11:31:43


代码清单(一):主要是配置相关应用接口和GPIO复用引脚:

//以下主要是配置LCD的相应管脚,可以根据上面的PCB信息得到连接的引脚:
void LCD_GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF
                            |RCC_AHB1Periph_GPIOG,ENABLE);
      
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  //配置引脚PF10
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOF,&GPIO_InitStructure);
      
        //配置引脚PD0/PD1/PD4/PD5/PD8/PD9/PD10/PD14/PD15
        GPIO_InitStructure.GPIO_Pin = (3<<0)|(3<<4)|(7<<8)|(3<<14);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOD,&GPIO_InitStructure);
      
        //配置引脚PE7-PE15;
        GPIO_InitStructure.GPIO_Pin = (0x1FF<<7);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOE,&GPIO_InitStructure);
      
        //配置引脚PG2和PG12
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOG,&GPIO_InitStructure);
      
        //配置引脚PD0/PD1/PD4/PD5/PD8/PD9/PD10/PD14/PD15
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource9,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource10,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource14,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOD,GPIO_PinSource15,GPIO_AF_FSMC);
      
        //配置引脚PE7-PE15
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource7,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource11,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource12,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource13,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource14,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource15,GPIO_AF_FSMC);
      
        //配置复用引脚PG2和PG12;
        GPIO_PinAFConfig(GPIOG,GPIO_PinSource2,GPIO_AF_FSMC);
        GPIO_PinAFConfig(GPIOG,GPIO_PinSource12,GPIO_AF_FSMC);
      
}  
代码清单(二):主要是配置STM32单片机内部的FSMC:


void LCD_Config(void)
{
  FSMC_NORSRAMInitTypeDef FSMC_InitStructure;
        FSMC_NORSRAMTimingInitTypeDef readTiming;
        FSMC_NORSRAMTimingInitTypeDef writeTiming;
        RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC,ENABLE);
      
        //配置时序:readTiming结构体
        readTiming.FSMC_AddressSetupTime = 0xF;//地址建立时间
        readTiming.FSMC_AddressHoldTime = 0x01;//地址保持时间
        readTiming.FSMC_DataSetupTime = 0x3C;  //数据建立时间
        readTiming.FSMC_BusTurnAroundDuration = 0x01;//总线转换时间
        readTiming.FSMC_CLKDivision = 0x00;   //时钟分频因子
        readTiming.FSMC_DataLatency = 0x00;//数据延迟时间
        readTiming.FSMC_AccessMode = FSMC_AccessMode_A;//设置存储器访问模式
      
        //配置写时序结构体:writeTiming结构体
        writeTiming.FSMC_AddressSetupTime = 0x08;
        writeTiming.FSMC_AddressHoldTime = 0x01;
        writeTiming.FSMC_DataSetupTime = 0x07;
        writeTiming.FSMC_BusTurnAroundDuration = 0x00;
        writeTiming.FSMC_CLKDivision = 0x00;
        writeTiming.FSMC_DataLatency = 0x00;
        writeTiming.FSMC_AccessMode = FSMC_AccessMode_A;
      
        //配置FSMC初始化结构体
        FSMC_InitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;//用于选择FSMC映射的存储区域
        FSMC_InitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;//设置地址总线与
                                                                         //数据总线是否复
                                                                         //用;
        FSMC_InitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;//用于设置需要控制的存储器类
                                                              //型
        FSMC_InitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;//设置数据宽度
        FSMC_InitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;//设置是否使用
                                                                           //突发模式
        FSMC_InitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;//设置是否使
                                                           //能数据同步传输时使用使能信号
        FSMC_InitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;//设置等待信
                                                           //号的有效极性
        FSMC_InitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;//设置是否支持把非对称AHB突发
                                                           //操作分割成两次线性操作
        FSMC_InitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;//
        FSMC_InitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;//
        FSMC_InitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; //
        FSMC_InitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable;//
        FSMC_InitStructure.FSMC_ReadWriteTimingStruct = &readTiming;
        FSMC_InitStructure.FSMC_WriteTimingStruct = &writeTiming;
        FSMC_NORSRAMInit(&FSMC_InitStructure);
        FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4,ENABLE);//ʹÄÜBank1£»
        delay_ms(50);
      
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分