回复【2楼】正点原子:
我看代码页没啥问题哦...
---------------------------------
现在#define LCD_BASE ((u32)(0x6C000000 | 0x0C000000))能读到ID9320,#define LCD_BASE ((u32)(0x6C000000 | 0x0C000000))读到的ID为0,但是用前面的能读到ID的宏定义还是不能显示出数据,现在液晶屏还是白屏,不知道问题出在哪,好郁闷这是按照你的程序移植的初始化
void LCD_Init(void)
{
u16 DeviceCode;
RCC->AHBENR|=1<<8; //使能FSMC时钟
RCC->APB2ENR|=1<<0; //使能AFIO时钟
RCC->APB2ENR|=1<<3; //使能PORTB时钟
RCC->APB2ENR|=1<<5; //使能PORTD时钟
RCC->APB2ENR|=1<<6; //使能PORTE时钟
RCC->APB2ENR|=1<<7; //使能PORTE时钟
RCC->APB2ENR|=1<<8; //使能PORTG时钟
//PORTD复用推挽输出
GPIOD->CRH&=0X00FFF000;
GPIOD->CRH|=0XBB000BBB;
GPIOD->CRL&=0XFF00FF00;
GPIOD->CRL|=0X00BB00BB;
//PORTE复用推挽输出
GPIOE->CRH&=0X00000000;
GPIOE->CRH|=0XBBBBBBBB;
GPIOE->CRL&=0X0FFFFFFF;
GPIOE->CRL|=0XB0000000;
//PORTF复用推挽输出 A0
GPIOF->CRL&=0XFFFFFFF0;
GPIOF->CRL|=0X0000000B;
//PORTG12复用推挽输出
GPIOG->CRL&=0XFFFF0FFF;//PG3 推挽输出 背光
GPIOG->CRL|=0X00003000;
GPIOG->CRH&=0XFFF0FFFF;
GPIOG->CRH|=0X000B0000;
//寄存器清零
//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<<4; //存储器数据宽度为16bit
//操作BTR寄存器
FSMC_Bank1->BTCR[7]|=1<<11; //数据保存时间为3个HCLK
//闪存写时序寄存器
FSMC_Bank1E->BWTR[6]=0x0FFFFFFF;//默认值
//使能BANK4(PC卡设备)
FSMC_Bank1->BTCR[6]|=1<<0;
Delay(5); // delay 50 ms
LCD_WriteReg(0x0000,0x0001);
Delay(5); // delay 50 ms
DeviceCode = LCD_ReadReg(0x0000); |