凯发ag旗舰厅登录网址下载
收集整理的这篇文章主要介绍了
显示屏的方向设置问题
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
此文基于stm32f429原子的例程,stm32f429自带ltdc液晶控制器,底层驱动在"ltdc.c"中配置。
1. 在不用emwin显示的情况下,如果想任意设置屏幕的显示方向,则应该更改文件"ltdc.c"中的打点函数,想怎么显示修改代码
lcdltdc.pixsize*(lcdltdc.pwidth*y x)
lcdltdc.pixsize*(lcdltdc.pwidth*(lcdltdc.pheight-x) y)
lcdltdc.pixsize*(lcdltdc.pwidth*(272-y) (480-x))
lcdltdc.pixsize*(lcdltdc.pwidth*(lcdltdc.pheight-x-1) y)
//画点函数
//x,y:坐标
//color:颜色值
void ltdc_draw_point(u16 x,u16 y,u32 color)
{
#if lcd_pixformat==lcd_pixformat_argb8888||lcd_pixformat==lcd_pixformat_rgb888if(lcdltdc.dir) //横屏{*(u32*)((u32)ltdc_framebuf[lcdltdc.activelayer]
lcdltdc.pixsize*(lcdltdc.pwidth*y x))=color;}else //竖屏{*(u32*)((u32)ltdc_framebuf[lcdltdc.activelayer]
lcdltdc.pixsize*(lcdltdc.pwidth*(lcdltdc.pheight-x) y))=color; }
#elseif(lcdltdc.dir) //横屏{*(u16*)((u32)ltdc_framebuf[lcdltdc.activelayer]
lcdltdc.pixsize*(lcdltdc.pwidth*y x))=color;}else //竖屏{*(u16*)((u32)ltdc_framebuf[lcdltdc.activelayer]
lcdltdc.pixsize*(lcdltdc.pwidth*(lcdltdc.pheight-x-1) y))=color; }
#endif
}
2.使用emwin时,应该在emwin的相应的lcd配置文件lcdconf_中修改lcd_x_config()函数,参考emwin5手册中的“显示驱动”一章节中的“通过函数配置显示方向”这一节,大概在800多页。
修改代码
gui_setorientation(gui_swap_xy|gui_mirror_y);
gui_setorientation(gui_mirror_x|gui_mirror_y);
//配置程序,用于创建显示驱动器件,设置颜色转换程序和显示尺寸
void lcd_x_config(void)
{uint32_t i;lcd_ll_init (); //lcd底层驱动(ltdc中断设置和dma2d初始化)
#if (num_buffers>1) //多缓冲for (i=0;i
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_setorientation(gui_mirror_x|gui_mirror_y); //设置为反向//屏幕方向设置}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_setorientation(gui_mirror_x|gui_mirror_y); //设置为反向//屏幕方向设置}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);
#endiflayer_prop[0].address=lcd_layer0_frame_buffer; //缓冲区
#if (gui_num_layers>1)layer_prop[1].address=lcd_layer1_frame_buffer;
#endiffor (i=0;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); 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);}
}
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的显示屏的方向设置问题的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。