void FMC_Init(void)
{
RCC->AHB1ENR|=1<<1; //使能PORTB时钟
RCC->AHB1ENR|=3<<3; //使能PD,PE
RCC->AHB3ENR|=1<<0; //使能FMC时钟
GPIO_Set(GPIOB,PIN5,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU); //PB5 推挽输出,控制背光
GPIO_Set(GPIOD,(3<<0)|(3<<4)|(15<<7)|(7<<13),GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); //PD0,1,4,5,7,8,9,10,13,14,15 AF OUT
GPIO_Set(GPIOD,PIN13|PIN3|PIN11|PIN12,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); //PD11,PD12 AF OUT 16和17
GPIO_Set(GPIOE,(0X1FF<<7),GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_Set(GPIOE,PIN3|PIN2|PIN4|PIN5|PIN6,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU); //PE3,地址19
GPIO_AF_Set(GPIOD,0,12); //PD0,AF12
GPIO_AF_Set(GPIOD,1,12); //PD1,AF12
GPIO_AF_Set(GPIOD,3,12); //PD3,AF12//CLK
GPIO_AF_Set(GPIOD,4,12); //PD4,AF12
GPIO_AF_Set(GPIOD,5,12); //PD5,AF12
GPIO_AF_Set(GPIOD,7,12); //PD7,AF12
GPIO_AF_Set(GPIOD,8,12); //PD8,AF12
GPIO_AF_Set(GPIOD,9,12); //PD9,AF12
GPIO_AF_Set(GPIOD,10,12); //PD10,AF12
GPIO_AF_Set(GPIOD,11,12); //PD11,AF12 地址16
GPIO_AF_Set(GPIOD,12,12); //PD12,AF12 地址17
GPIO_AF_Set(GPIOD,13,12); //PD13,AF12 地址18
GPIO_AF_Set(GPIOD,14,12); //PD14,AF12
GPIO_AF_Set(GPIOD,15,12); //PD15,AF12
GPIO_AF_Set(GPIOE,2,12); //PE7,AF12 地址19
GPIO_AF_Set(GPIOE,4,12); //PE7,AF12 地址19
GPIO_AF_Set(GPIOE,5,12); //PE7,AF12 地址19
GPIO_AF_Set(GPIOE,6,12); //PE7,AF12 地址19
GPIO_AF_Set(GPIOE,3,12); //PE7,AF12 地址19
GPIO_AF_Set(GPIOE,7,12); //PE7,AF12
GPIO_AF_Set(GPIOE,8,12); //PE8,AF12
GPIO_AF_Set(GPIOE,9,12); //PE9,AF12
GPIO_AF_Set(GPIOE,10,12); //PE10,AF12
GPIO_AF_Set(GPIOE,11,12); //PE11,AF12
GPIO_AF_Set(GPIOE,12,12); //PE12,AF12
GPIO_AF_Set(GPIOE,13,12); //PE13,AF12
GPIO_AF_Set(GPIOE,14,12); //PE14,AF12
GPIO_AF_Set(GPIOE,15,12); //PE15,AF12
FMC_Bank1->BTCR[0]=0X00000000;
FMC_Bank1->BTCR[1]=0X00000000;
FMC_Bank1->BTCR[0]|=1<<12; //
FMC_Bank1->BTCR[0]|=1<<7; //使能CLK输出
FMC_Bank1->BTCR[0]|=1<<8; //同步模式使能
FMC_Bank1->BTCR[0]|=1<<4; //存储器数据宽度为16bit
FMC_Bank1->BTCR[0]|=1<<2; //psram
FMC_Bank1->BTCR[0]|=1<<1; //psram
FMC_Bank1->BTCR[1]|=1<<22; //clk为5倍的Hclk
FMC_Bank1->BTCR[1]|=1<<19; //NE的时间,为9个HCLK周期=5.2*10=52ns
FMC_Bank1->BTCR[0]|=1<<1; //使能BANK1,区域1
FMC_Bank1->BTCR[0]|=1<<0; //使能BANK1,区域1
delay_ms(50); // delay 50 ms
}
|