金牌会员
 
- 积分
- 1887
- 金钱
- 1887
- 注册时间
- 2012-10-28
- 在线时间
- 353 小时
|
2金钱
//配置程序,用于创建显示驱动器件,设置颜色转换程序和显示尺寸
void LCD_X_Config(void)
{
uint32_t i;
LCD_LL_Init (); //LCD底层驱动(LTDC中断设置和DMA2D初始化)
#if (NUM_BUFFERS>1) //多缓冲
for (i=0;i<GUI_NUM_LAYERS; i++)
{
GUI_MULTIBUF_ConfigEx(i, NUM_BUFFERS);
}
#endif
//设置第一层
GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER_0,COLOR_CONVERSION_0,0,0);//创建显示驱动器件
GUI_SelectLayer(0); //选中第0层
if(lcddev.dir==0)//竖屏
{
LCD_SetSizeEx(0,lcddev.height,lcddev.width); //设置可见区尺寸
LCD_SetVSizeEx(0,lcddev.height,lcddev.width*NUM_VSCREENS); //设置虚拟显示区尺寸
GUI_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y); //设置为竖屏
}else //横屏
{
LCD_SetSizeEx(0,lcddev.width,lcddev.height); //设置可见区尺寸
LCD_SetVSizeEx(0,lcddev.width,lcddev.height*NUM_VSCREENS); //设置虚拟显示区尺寸
}
GUI_TOUCH_Calibrate(GUI_COORD_X,0,lcddev.width,0,lcddev.width-1);
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,lcddev.height,0,lcddev.height-1);
#if (GUI_NUM_LAYERS>1)
//设置第二层
GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER_1,COLOR_CONVERSION_1,0,1);
GUI_SelectLayer(1); //选中第1层
if(lcddev.dir==0)//竖屏
{
LCD_SetSizeEx(1,lcddev.height,lcddev.width); //设置可见区尺寸
LCD_SetVSizeEx(1,lcddev.height,lcddev.width*NUM_VSCREENS); //设置虚拟显示区尺寸
GUI_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_Y); //设置为竖屏
}else //横屏
{
LCD_SetSizeEx(1,lcddev.width,lcddev.height); //设置可见区尺寸
LCD_SetVSizeEx(1,lcddev.width,lcddev.height*NUM_VSCREENS); //设置虚拟显示区尺寸
}
GUI_TOUCH_Calibrate(GUI_COORD_X,0,lcddev.width,0,lcddev.width-1);
GUI_TOUCH_Calibrate(GUI_COORD_Y,0,lcddev.height,0,lcddev.height-1);
#endif
layer_prop[0].address=LCD_LAYER0_FRAME_BUFFER; //缓冲区
#if (GUI_NUM_LAYERS>1)
layer_prop[1].address=LCD_LAYER1_FRAME_BUFFER;
#endif
for (i=0;i<GUI_NUM_LAYERS;i++)
{
layer_prop.pColorConvAPI=(LCD_API_COLOR_CONV *)apColorConvAPI;
layer_prop.pending_buffer=-1;
LCD_SetVRAMAddrEx(i,(void *)(layer_prop.address));
layer_prop.BytesPerPixel=LCD_GetBitsPerPixelEx(i) >> 3;
LCD_SetDevFunc(i,LCD_DEVFUNC_COPYBUFFER,(void(*)(void))CUSTOM_CopyBuffer);
LCD_SetDevFunc(i,LCD_DEVFUNC_COPYRECT,(void(*)(void))CUSTOM_CopyRect);
if (LCD_LL_GetPixelformat(i)<=LTDC_PIXEL_FORMAT_ARGB4444)
{
LCD_SetDevFunc(i,LCD_DEVFUNC_FILLRECT,(void(*)(void))CUSTOM_FillRect);
LCD_SetDevFunc(i,LCD_DEVFUNC_DRAWBMP_8BPP,(void(*)(void))LCD_DrawBitmap8bpp);
}
if(LCD_LL_GetPixelformat(i)==LTDC_PIXEL_FORMAT_RGB565)
{
LCD_SetDevFunc(i,LCD_DEVFUNC_DRAWBMP_16BPP,(void(*)(void))LCD_DrawBitmap16bpp);
}
GUICC_M1555I_SetCustColorConv(Color2IndexBulk_M1555IDMA2D,Index2ColorBulk_M1555IDMA2D);
//GUICC_M565_SetCustColorConv(Color2IndexBulk_M565DMA2D,Index2ColorBulk_M565DMA2D); 此次为何屏蔽啊,565格式不使用吗 ?????????????
GUICC_M4444I_SetCustColorConv(Color2IndexBulk_M4444IDMA2D,Index2ColorBulk_M4444IDMA2D);
GUICC_M888_SetCustColorConv(Color2IndexBulk_M888DMA2D,Index2ColorBulk_M888DMA2D);
GUICC_M8888I_SetCustColorConv(Color2IndexBulk_M8888IDMA2D,Index2ColorBulk_M8888IDMA2D);
GUI_SetFuncAlphaBlending(DMA2D_AlphaBlending);
GUI_SetFuncGetpPalConvTable(_LCD_GetpPalConvTable);
GUI_SetFuncMixColors(DMA2D_MixColors);
GUI_SetFuncMixColorsBulk(LCD_MixColorsBulk);
}
}
|
|