📄 lcd_test.c
字号:
Disp("Enter Any Key To Test Color Key (BACKGROUND MATCH) + BLENDING\n");
UART_Getc();
Disp("\n");
LCD_SetColorKey(uMaskKey, uColorKey, MATCH_BG_IMAGE, true, eFgWin);
for(k=0; k<0x10; k++)
{
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0+k, 0x0+k, 0x0+k, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Process A Color Key Test: %d\n", k);
UART_Getc();
}
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Per Plane Blending(Using ALPHA 1 VALUE) \n");
Disp("\n");
UART_Getc();
for(k=0; k<0x10; k++)
{
LCD_SetAlpha(0x0+k, 0x0+k, 0x0+k, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Process A Color Key Test: %d\n", k);
UART_Getc();
}
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
for(k=0; k<0x10; k++)
{
LCD_SetAlpha(0x0+k, 0x0+k, 0x0+k, 0x0+k, 0x0+k, 0x0+k, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Process A Color Key Test: %d\n", k);
UART_Getc();
}
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
/////////////////////////////////////////////////////////////////////
}
static void BlendingPerPlane(void)
{
u32 uFgAddr;
u32 uHSz, uVSz;
int j;
int l=0;
int m=0;
int n=0;
bIsRev = false;
bIsAllWin = false;
Disp("Enter Any Key To Test Per Plane Blending\n");
UART_Getc();
LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);
LCD_SetWinOnOff(1, eBgWin);
LCD_Start();
LCD_GetFrmSz(&uHSz,&uVSz, eBgWin);
// Draw Pattern by using Glib for window 0
Disp("Window %d(Background) is Displayed\n", (int)eBgWin);
Disp("\n");
GLIB_Init(uLcdFbAddr, uHSz, uVSz, eBgBpp);
GLIB_DrawPattern(uHSz, uVSz);
LCD_Trigger();
Disp("Enter Any Key To Display Window %d\n", (int)eFgWin);
UART_Getc();
LCD_GetFbEndAddr(&uFgAddr, eBgWin);
LCD_InitWin(eFgBpp, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uFgAddr, eFgWin, false);
LCD_SetWinOnOff(1, eFgWin);
LCD_GetFrmSz(&uHSz, &uVSz, eFgWin);
// Draw Rectangles by using Glib for window 1
GLIB_Init(uFgAddr, uHSz, uVSz, eFgBpp);
GLIB_ClearFrame(C_MAGENTA);
LCD_Trigger();
Disp("Window %d(ForeGround) is Displayed\n", (int)eFgWin);
Disp("\n");
Disp("Enter Any Key To Test Per Plane Blending(Using ALPHA 0 VALUE)\n");
Disp("\n");
UART_Getc();
LCD_SetBlendingType(PER_PLANE, ALPHA0_PLANE, eFgWin);
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
for (j=0; j<0x10; j++)
{
LCD_SetAlpha(0x0+j, 0x0+j, 0x0+j, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Test Per Plane Blending (Using ALPHA 0 VALUE): %d\n", j);
UART_Getc();
}
Disp("Enter Any Key To Per Plane lending(Using ALPHA 1 VALUE) \n");
Disp("\n");
UART_Getc();
GLIB_ClearFrame(C_YELLOW);
LCD_SetBlendingType(PER_PLANE, ALPHA1_PLANE, eFgWin);
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
for (j=0; j<0x10; j++)
{
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0+l, 0x0+m, 0x0+n, eFgWin);
LCD_Trigger();
l++;
m = (m<0xf) ? m+2 : m;
n = (n<0xf) ? n+3 : n;
Disp("Enter Any Key To Test Per Plane Blending (Using ALPHA 1 VALUE): %d\n", j);
UART_Getc();
}
}
static void BlendingPerPixel(void)
{
u32 uFgAddr;
u32 uHSz, uVSz;
int j;
bIsRev = false;
bIsAllWin = false;
Disp("Enter Any Key To Test Per Pixel Blending\n");
UART_Getc();
LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);
LCD_SetWinOnOff(1, eBgWin);
LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
LCD_Start();
// Draw Pattern by using Glib for window 0
Disp("Window 0(Background) is Displayed\n");
GLIB_Init(uLcdFbAddr, uHSz, uVSz, eBgBpp);
GLIB_DrawPattern(uHSz, uVSz);
LCD_Trigger();
Disp("Enter Any Key To Display Window %d (Foreground)\n", (int)eFgWin);
UART_Getc();
LCD_GetFbEndAddr(&uFgAddr, eBgWin);
LCD_InitWin(eFgArgbBpp, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uFgAddr, eFgWin, false);
LCD_SetWinOnOff(1, eFgWin);
LCD_GetFrmSz(&uHSz, &uVSz, eFgWin);
LCD_SetBlendingType(PER_PIXEL, AEN_PIXEL, eFgWin);
GLIB_Init(uFgAddr, uHSz, uVSz, eFgArgbBpp);
GLIB_SetFontColor(C_BLACK, C_WHITE, true);
GLIB_ClearFrame3(C_RED, ALPHA_0);
GLIB_Printf(20, 40, "Alpha 0 is applied");
GLIB_FillRectangle3(40, 60, 160, 120, C_GREEN, ALPHA_1);
GLIB_Printf(50, 70, "Alpha 1 is applied");
LCD_Trigger();
Disp("\n");
Disp("Window %d (Foreground) is Displayed\n", (int)eFgWin);
Disp("Enter Any Key To Test Per-Pixel Blending\n");
UART_Getc();
for (j=0; j<0x10; j++)
{
LCD_SetAlpha(0x0+j, 0x0+j, 0x0+j, 0xf-j, 0xf-j, 0xf-j, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Test Per-Pixel Blending: %d\n", j);
UART_Getc();
}
}
static void DisIntRgb(void)
{
u32 i;
u32 uHSz, uVSz;
FRAME_INT_SEL eFIntSel;
FIFO_INT_LEVEL eFifoIntLevel;
FIFO_INT_SEL eFifoIntSel;
bIsRev = false;
bIsAllWin = false;
LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);
LCD_SetWinOnOff(1, eBgWin);
LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
GLIB_InitInstance(uLcdFbAddr, uHSz, uVSz, eBgBpp);
GLIB_DrawPattern(uHSz, uVSz);
Disp("\nDisplay Frame Interrupt. \n");
Disp("Background: WINDOW %d\n", (int)eBgWin);
INTC_SetVectAddr(NUM_LCD1, Isr_LCD_FrameInt);
for(i=0;i<4;i++)
{
eFIntSel =
(i == 0) ? FINT_BACKPORCH :
(i == 1) ? FINT_VSYNC :
(i == 2) ? FINT_ACTIVE : FINT_FRONTPORCH;
LCD_InitInt(LCD_FRAME_INT, eLcdCpuifInt, FIFO_25, FIFO_INT_WIN0, eFIntSel);
LCD_EnableInt();
INTC_Enable(NUM_LCD1);
LCD_Start();
Disp("\nIf you want to stop Frame Int., press any key\n");
UART_Getc();
INTC_Disable(NUM_LCD1);
LCD_DisableInt();
}
Disp("\nDisplay FIFO Interrupt. \n");
INTC_SetVectAddr(NUM_LCD0, Isr_LCD_FifoInt);
Disp("\nIf you want to stop FIFO Int., press any key\n");
eFifoIntSel=
(eBgWin == WIN0) ? FIFO_INT_WIN0 :
(eBgWin == WIN1) ? FIFO_INT_WIN1 :
(eBgWin == WIN2) ? FIFO_INT_WIN2 :
(eBgWin == WIN3) ? FIFO_INT_WIN3 : FIFO_INT_WIN4;
for(i=0;i<5;i++)
{
uCount=0;
eFifoIntLevel =
(i == 0) ? FIFO_25 :
(i == 1) ? FIFO_50 :
(i == 2) ? FIFO_75 :
(i == 3) ? FIFO_EMPTY : FIFO_FULL;
LCD_InitInt(LCD_FIFO_INT, eLcdCpuifInt, eFifoIntLevel, eFifoIntSel, FINT_BACKPORCH);
LCD_EnableInt();
INTC_Enable(NUM_LCD0);
LCD_Start();
while(GetKey() == 0)
{}
INTC_Disable(NUM_LCD0);
LCD_DisableInt();
Disp("\n");
}
}
static void DoubleBuffering(void)
{
u32 uDoubleBufAddr;
u32 uHSz, uVSz;
LCD_WINDOW eBgWin_Temp;
bIsRev = false;
bIsAllWin = false;
// Enable Double Buffer
Disp("Enter Any Key To Test Simple Double Buffering\n");
UART_Getc();
eBgWin_Temp=eBgWin;
eBgWin=WIN0;
LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, true);
LCD_SetWinOnOff(1, eBgWin);
LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
INTC_SetVectAddr(NUM_LCD1, Isr_LCD_FrameInt);
LCD_InitInt(LCD_FRAME_INT, eLcdCpuifInt, FIFO_25, FIFO_INT_WIN0, FINT_VSYNC);
LCD_EnableInt();
INTC_Enable(NUM_LCD1);
Disp("Window 0's Double Buffering Test\n");
Disp("Enter Any Key To Exit Double Buffering Test\n");
LCD_GetDoubleBufAddr(&uDoubleBufAddr, 0, eBgWin);
GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
//GLIB_ClearFrame(C_YELLOW);
GLIB_DrawPattern(uHSz, uVSz);
LCD_SetActiveFrameBuf(0, eBgWin);
GLIB_SetFontColor(C_BLACK, C_YELLOW, false);
GLIB_Printf(40, 160, "WINDOW 0's Buffer %d", 0);
LCD_GetDoubleBufAddr(&uDoubleBufAddr, 1, eBgWin);
GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
//GLIB_ClearFrame(C_GREEN);
GLIB_DrawPattern(uHSz, uVSz);
LCD_SetActiveFrameBuf(1, eBgWin);
GLIB_SetFontColor(C_BLACK, C_GREEN, false);
GLIB_Printf(40, 160, "WINDOW 0's Buffer %d", 1);
LCD_Start();
while(GetKey() == 0)
{
//LCD_Trigger();
}
LCD_SetWinOnOff(0, eBgWin);
INTC_Disable(NUM_LCD1);
LCD_DisableInt();
Disp("\n");
Disp("Window 1's Double Buffering Test\n");
Disp("Enter Any Key To Exit Double Buffering Test\n");
eBgWin=WIN1;
LCD_InitWin(eBgBpp, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uLcdFbAddr, eBgWin, true);
LCD_SetWinOnOff(1, eBgWin);
LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
INTC_SetVectAddr(NUM_LCD1, Isr_LCD_FrameInt);
LCD_InitInt(LCD_FRAME_INT, eLcdCpuifInt, FIFO_25, FIFO_INT_WIN0, FINT_ACTIVE);
LCD_EnableInt();
INTC_Enable(NUM_LCD1);
LCD_GetDoubleBufAddr(&uDoubleBufAddr, 0, eBgWin);
GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
GLIB_ClearFrame(C_WHITE);
LCD_SetActiveFrameBuf(0, eBgWin);
GLIB_SetFontColor(C_BLACK, C_WHITE, false);
GLIB_Printf(40, 160, "WINDOW 1's Buffer %d", 0);
LCD_GetDoubleBufAddr(&uDoubleBufAddr, 1, eBgWin);
GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
GLIB_ClearFrame(C_BLUE);
LCD_SetActiveFrameBuf(1, eBgWin);
GLIB_SetFontColor(C_BLACK, C_BLUE, false);
GLIB_Printf(40, 160, "WINDOW 1's Buffer %d", 1);
while(GetKey() == 0)
{
//LCD_Trigger();
}
LCD_SetWinOnOff(0, eBgWin);
INTC_Disable(NUM_LCD1);
LCD_DisableInt();
LCD_PerFrameOff();
eBgWin = eBgWin_Temp;
}
static void AutoDoubleBuffering(void)
{
u32 uDoubleBufAddr;
u32 uHSz, uVSz;
u32 uBufferIdx = 0;
bIsRev = false;
bIsAllWin = false;
// Enable Double Buffer
Disp("Enter Any Key To Test Auto Double Buffering\n");
UART_Getc();
//// WIN 0 ////
LCD_InitDISPC(eBgBpp, uLcdFbAddr, WIN0, true);
LCD_SetWinOnOff(1, WIN0);
LCD_GetFrmSz(&uHSz, &uVSz, WIN0);
//LCD_Start();
LCD_GetDoubleBufAddr(&uDoubleBufAddr, 0, WIN0);
GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
GLIB_DrawPattern2(uHSz, uVSz);
LCD_GetDoubleBufAddr(&uDoubleBufAddr, 1, WIN0);
GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
GLIB_DrawPattern2(uHSz, uVSz);
LCD_SetActiveFrameBuf(1, WIN0);
LCD_EnableAutoBuf(1, WIN0); // 0: Normal Double Buffering 1: Auto Double Buffering
LCD_Start();
Disp("Enter Any Key To Exit Test\n");
while (GetKey() == 0)
{
LCD_Trigger();
LCD_GetBufIdx(&uBufferIdx, WIN0);
Disp("Selected Buffer Index(WIN 0): %d\n", uBufferIdx);
Delay(1000);
}
Disp("\n");
Disp("Enter Any Key To Test WIN 1's Auto Double Buffering\n");
UART_Getc();
LCD_SetWinOnOff(0, WIN0);
//// WIN 1 ////
LCD_InitWin(eBgBpp, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uLcdFbAddr, WIN1, true);
LCD_SetWinOnOff(1, WIN1);
uBufferIdx = 0;
LCD_GetDoubleBufAddr(&uDoubleBufAddr, 0, WIN1);
GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
GLIB_DrawPattern(uHSz, uVSz);
LCD_Trigger();
LCD_GetDoubleBufAddr(&uDoubleBufAddr, 1, WIN1);
GLIB_Init(uDoubleBufAddr, uHSz, uVSz, eBgBpp);
GLIB_DrawPattern2(uHSz, uVSz);
LCD_Trigger();
LCD_SetActiveFrameBuf(1, WIN1);
LCD_EnableAutoBuf(1, WIN1); // 0: Normal Double Buffering 1: Auto Double Buffering
Disp("Enter Any Key To Exit Test\n");
while (GetKey() == 0)
{
LCD_Trigger();
LCD_GetBufIdx(&uBufferIdx, WIN1);
Disp("Selected Buffer Index(WIN 1): %d\n", uBufferIdx);
Delay(1000);
}
LCD_SetWinOnOff(0, WIN1);
LCD_Stop();
}
static void NonPaletteBpp(void)
{
u32 uHSz, uVSz, uNofPixel;
u32 uColor[16];
u32 i;
bIsRev = false;
bIsAllWin = false;
uColor[0] = 0x0; // Black
uColor[1] = 0x3f<<0; // Blue
uColor[2] = 0x3f<<6; // Green
uColor[3] = (0x3f<<6)|(0x3f<<0); // Cyan
uColor[4] = 0x3f<<12; // Red
uColor[5] = (0x3f<<12)|(0x3f<<0); // Magenta
uColor[6] = (0x3f<<12)|(0x3f<<6); // Yellow
uColor[7] = 0x3ffff; // White
Disp("Enter Any Key To Test 18 bpp.\n");
UART_Getc();
LCD_InitDISPC(RGB18, uLcdFbAddr, eBgWin, false);
LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
LCD_SetWinOnOff(1, eBgWin);
uNofPixel = uHSz*uVSz;
for (i=0; i<uNofPixel; i++)
{
if ( i < uNofPixel/8) *(u32*)(uLcdFbAddr+i*4) = uColor[0];
else if ( i >= uNofPixel/8 && i < uNofPixel/8*2) *(u32*)(uLcdFbAddr+i*4) = uColor[1];
else if ( i >= uNofPixel/8*2 && i < uNofPixel/8*3) *(u32*)(uLcdFbAddr+i*4) = uColor[2];
else if ( i >= uNofPixel/8*3 && i < uNofPixel/8*4) *(u32*)(uLcdFbAddr+i*4) = uColor[3];
else if ( i >= uNofPixel/8*4 && i < uNofPixel/8*5) *(u32*)(uLcdFbAddr+i*4) = uColor[4];
else if ( i >= uNofPixel/8*5 && i < uNofPixel/8*6) *(u32*)(uLcdFbAddr+i*4) = uColor[5];
else if ( i >= uNofPixel/8*6 && i < uNofPixel/8*7) *(u32*)(uLcdFbAddr+i*4) = uColor[6];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -