测试程序里有一段关于LCD寄存器的初始化代码: 
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0; 
            // TFT LCD panel,12bpp TFT,ENVID=off 
        rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW); 
        rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD); 
        rLCDCON4=(MVAL<<8)|(HSPW); 
        rLCDCON5 = (1<<11) | (0<<10) | (1<<9) | (1<<8) | (0<<7) | (0<<6) | (1<<3)  |(BSWP<<1) | (HWSWP); 
 
        rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1); 
        rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 ); 
        rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1); 
        rLCDINTMSK|=(3); // MASK LCD Sub Interrupt 
        rTCONSEL &= (~7) ;     // Disable LPC3480 
        rTPAL=0; // Disable Temp Palette 
有几点我不了解: 
rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 ); 
这里为什么是乘2,是因为16bpp,一个像素点占2个字节吗? 
如果是的话,我想使用24bpp,一个像素点占3个字节:我将 
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0; 
改为: 
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(13<<1)|0; 
然后改 
rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 ); 
为 
rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*3))>>1 ); 
但是此时发现:LCD屏出现闪烁的画面?这是为什么?是不是还需要设置其他的寄存器。 
另外如果对原设置做如下设置: 
rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(3<<5)|(13<<1)|0; 
            // TFT LCD panel,12bpp TFT,ENVID=off 
rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 ); 
则LCD屏上出现4个分块的图片,这又是为什么? 
请高手帮忙解释一下原因! |