📄 test_lcd.c
字号:
#include "2410addr.h"
#include "Option.h"
#include "Def.h"
#define LCD_XSIZE_TFT (240)
#define LCD_YSIZE_TFT (320)
#define HOZVAL_TFT (LCD_XSIZE_TFT-1)
#define LINEVAL_TFT (LCD_YSIZE_TFT-1)
#define MVAL (13)
#define MVAL_USED (0)
#define VBPD ((9-1)&0xff)
#define VFPD ((10-1)&0xff)
#define VSPW ((2-1) &0x3f)
#define HBPD ((18-1)&0x7f)
#define HFPD ((16-1)&0xff)
#define HSPW ((16-1)&0xff)
#define CLKVAL_TFT (1)
#define DMA_PHYSICAL_BASE 0x30000000 // S3C2410X01
#define FRAMEBUF_DMA_BASE (DMA_PHYSICAL_BASE + 0x00100000)
#define M5D(n) ((n) & 0x1fffff)
#define COLOR 0xff
void LCD_Init(void)
{
// LCD port initialize.
rGPCUP = 0xFFFFFFFF;
rGPCCON = 0xAAAAAAAA;
rGPCCON = 0xAAAAAAAA;
rGPDUP = 0xFFFFFFFF;
rGPDCON = 0xAAAAAAAA;
rGPGCON &= ~(3 << 8);
/* Set LCD_PWREN as output*/
rGPGDAT |= (1 << 4); /* Backlight ON*/
rLCDCON1=(7<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
// TFT LCD panel,16bpp 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)|(1<<9)|(1<<8)|(1<<3)|(1<<0); //FRM5:6:5,HSYNC and VSYNC are inverted
rLCDSADDR1=((FRAMEBUF_DMA_BASE>>22)<<21)|M5D(FRAMEBUF_DMA_BASE>>1);
rLCDSADDR2=M5D( (FRAMEBUF_DMA_BASE+(LCD_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );
rLCDSADDR3=(((LCD_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rLPCSEL&=(~7); // Disable LPC3600
rTPAL=0; // Disable Temp Palette
rLCDCON1 |= 1;
}
void LCD_Draw(void)
{
int I;
long int *pDisp=(long int *)FRAMEBUF_DMA_BASE;
long int *addr=(long int *)(0x34000000);
for(I=0;I<(LCD_XSIZE_TFT* LCD_YSIZE_TFT/2);I++)
{
// *pDisp++=COLOR;
*pDisp++=*addr++;
}
}
int main(void)
{
LCD_Init();
LCD_Draw();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -