void LCD_Init(void)
{
u16 DeviceCode;
RCC->APB2ENR|=1<<3;//先使能外设 PORTB 时钟
RCC->APB2ENR|=1<<4;//先使能外设 PORTC 时钟
RCC->APB2ENR|=1<<0; //开启辅助时钟
AFIO->MAPR=0X04000000; //关闭 JTAG
//PORTC6~10 复用推挽输出
GPIOC->CRH&=0XFFFFF000;
GPIOC->CRH|=0X00000333;
GPIOC->CRL&=0X00FFFFFF;
GPIOC->CRL|=0X33000000;
GPIOC->ODR|=0X07C0;
//PORTB 推挽输出
GPIOB->CRH=0X33333333;
GPIOB->CRL=0X33333333;
GPIOB->ODR=0XFFFF;
Delay(5); // delay 50 ms 请问这里为什么要延时50ms呢?不延行不行
LCD_WriteReg(0x0000,0x0001); //第一个参数是寄存器号,第二个参数就不知道了?
Delay(5); // delay 50 ms 又来,应该和上面一个样吧?
DeviceCode = LCD_ReadReg(0x0000);
//printf("ID:%d\n",DeviceCode);
if(DeviceCode==0x9325||DeviceCode==0x9328)//ILI9325
{
……//9325/9328 初始化代码
}
else if(DeviceCode==0x9320||DeviceCode==0x9300)
{
……//9320/9300 初始化代码
}
else if(DeviceCode==0x1505)
{
177
……//1505 初始化代码
}
else if(DeviceCode==0x8989)
{
……//8989 初始化代码
}
Delay(5000);
LCD_Clear(WHITE);
} |