关于stm32f103VE 使用FSMC控制LCD 应该如何初始化FSMC??求指点

2019-08-14 07:38发布

原子哥的资料里是103ZE的 可我的只有100脚 没有F G 的管脚啊 那么该怎么配置? ?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
36条回答
hack906447
2019-08-18 11:13
回复【30楼】八度空间:
---------------------------------
不知道为什么改了还是没有显示
麻煩大神有空幫我看看十分感謝

GPIO_InitTypeDef GPIO_InitStructure;
FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef  readWriteTiming; 
FSMC_NORSRAMTimingInitTypeDef  writeTiming;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE); //使能FSMC時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE);//使能PORTB,D,E,G以及AFIO復用功能時鐘

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  //PB0 推輓輸出 背光
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推輓輸出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOB, &GPIO_InitStructure);
  //PORTD復用推輓輸出  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_14|GPIO_Pin_15;  // //PORTD復用推輓輸出  
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //復用推輓輸出   
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure); 
//PD0-FSMC D2 //PD1-FSMC D3 //PD4-FSMC NOE //PD5-FSMC NWE //PD8-FSMC D13 //PD9-FSMC D14
//PD10-FSMC D15 //PD14-FSMC D0 //PD15-FSMC D1 //PD11-FSMC A16 //PD7-FSMC NE1
//PORTE復用推輓輸出  
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;  // //PORTD復用推輓輸出  
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //復用推輓輸出   
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOE, &GPIO_InitStructure); 
//PE7~PE15-FSMC D4~D12
  
readWriteTiming.FSMC_AddressSetupTime = 0x01;  //地址建立時間(ADDSET)為2個HCLK 1/36M=27ns
readWriteTiming.FSMC_AddressHoldTime = 0x00;  //地址保持時間(ADDHLD)模式A未用到
readWriteTiming.FSMC_DataSetupTime = 0x0f;  // 數據保存時間為16個HCLK,因為液晶驅動IC的讀數據的時候,速度不能太快,尤其對1289這個IC。
readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;
readWriteTiming.FSMC_CLKDivision = 0x00;
readWriteTiming.FSMC_DataLatency = 0x00;
readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A;  //模式A 
    

writeTiming.FSMC_AddressSetupTime = 0x00;  //地址建立時間(ADDSET)為1個HCLK  
writeTiming.FSMC_AddressHoldTime = 0x00;  //地址保持時間(A
writeTiming.FSMC_DataSetupTime = 0x03;  ////數據保存時間為4個HCLK
writeTiming.FSMC_BusTurnAroundDuration = 0x00;
writeTiming.FSMC_CLKDivision = 0x00;
writeTiming.FSMC_DataLatency = 0x00;
writeTiming.FSMC_AccessMode = FSMC_AccessMode_A;  //模式A 

 
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; // 不復用數據地址
FSMC_NORSRAMInitStructure.FSMC_MemoryType =FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM;  //SRAM   
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable; 
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait=FSMC_AsynchronousWait_Disable; 
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;   
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;  
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //  存儲器寫使能
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;   
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable; // 讀寫使用不同的時序
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; 
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming; //讀寫時序
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &writeTiming;  //寫時序 FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);  //初始化FSMC配置
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);// 使能BANK1

一周热门 更多>