此文基于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_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_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<GUI_NUM_LAYERS;i++) {layer_prop[i].pColorConvAPI=(LCD_API_COLOR_CONV *)apColorConvAPI[i];layer_prop[i].pending_buffer=-1;LCD_SetVRAMAddrEx(i,(void *)(layer_prop[i].address));layer_prop[i].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);  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);}
}

显示屏的方向设置问题相关推荐

  1. 【Android RTMP】Android Camera 视频数据采集预览 ( 图像传感器方向设置 | Camera 使用流程 | 动态权限申请 )

    文章目录 安卓直播推流专栏博客总结 一. Camera 传感器方向简介 二. Camera 图像传感器横向显示数据 三. Camera 图像传感器纵向显示数据 四. 设置 Camera 预览数据方向 ...

  2. win7如何用双显示屏,如何设置

    确保把显示器与电脑连接,电源接通. 1.鼠标右击,选择<屏幕分辨率> 2.在<多显示器>选项里有扩展.复制等选项.选扩展的话,两个屏幕只有桌面背景一样,相当于扩大了1号显示器. ...

  3. STM32-IO方向设置

    读取MPU6050时,在IIC.h中看到了如下的代码,比较疑惑是什么意思. #define MPU_SDA_IN() {GPIOB->CRH&=0XFFFFFF0F;GPIOB-> ...

  4. 【Android UI】Paint Gradient 渐变渲染 ① ( LinearGradient 线性渐变渲染 | 设置渲染方向 | 设置渲染颜色 | 设置渲染模式 | MIRROR )

    文章目录 一.LinearGradient 线性渐变渲染 1.设置 2 个颜色的渐变 3.设置多个颜色的渐变 二.LinearGradient 线性渐变渲染重要参数分析 1.正常渲染 2.设置多个渐变 ...

  5. Matplotlib绘图中plt.xtricks()X轴文字方向设置方法

    1.plt.xtricks()函数详解参数介绍 def xticks(ticks: Union[ndarray, Iterable, int, float, None] = None,labels: ...

  6. html 打印方向设置

    1.横向打印 <style type="text/css" media="print">@page{size:A4 landscape;} < ...

  7. led显示屏服务器怎么设置,led显示屏怎么改字幕 led显示屏改字幕方法

    下面三种方法可帮助你实现led显示屏改字. led显示屏改字方法一:通过手机(或遥控)来改字 这种方式是最简单的方式,我们可以编辑短信就可以发送和更改广告字幕了. led显示屏改字方法二:通过u盘改字 ...

  8. Android横竖屏屏幕方向设置

    通常在代码里可以直接设置屏幕的方向,大致如下: 设置为横屏: private void setHorizontalScreen(Activity activity) {if (activity.get ...

  9. cocos creator 角色扮演RPG游戏 动态创建动画,附8方向设置

    脚本是我根据官方的动态创建动画来的.因为我的素材是每个dong动作一个套图片,所以我是这样设置: 1,素材整理 一套素材包含:站立,跑步,攻击,技能,死亡,采集,每个动作都有8个方向的素材, 比较多少 ...

最新文章

  1. 现代密码学2.1--完美安全和完美不可区分/Perfectly secret, Perfectly indistinguishable
  2. linux创建crontab定时任务
  3. GitHub Universe 2021|MS Reactor 邀你共聚年度盛会
  4. Mybatisplus 自动生成字段 强制覆盖 null或者空字符串也覆盖
  5. 修改linux资源限制参数命令,linux passwd命令参数及用法详解--linux修改用户密码命令...
  6. python 不等于_python零基础(二)
  7. linux -- su和sudo命令的区别
  8. Gadget,又见Gadget - 浅尝Windows Live Contacts Gadget
  9. 机器学习算法基础2-机器学习大致了解
  10. CentOS 7配置Docker Storage
  11. iOS之01-基本语法
  12. latex 图片缩小指定比例
  13. .NET-3.Xamarin学习与总结
  14. 论坛介绍 | COSCon'22 开源文化
  15. 网站被移动运营方屏蔽怎么办?
  16. 使用jqery模拟网易严选购物车功能
  17. [原]极域电子教室3个没被发现的bug(V6 2007)
  18. schtasks /run 拒绝访问
  19. source-map
  20. 计算机安装win10系统还原,解决win10电脑一键还原教程

热门文章

  1. 当互联网公司聚餐时,他们是如何谈(ge)笑(huai)风(gui)生(tai)的
  2. 一场性能当道 优化为王的沙龙盛宴
  3. Apple Pay,呸!
  4. python+xlrd+echarts数据可视化demo
  5. Redisson分布式锁分析
  6. 聚能聊每周精选 第二十三期
  7. [Android]Space控件的应用场景
  8. Nginx FastCGI的运行原理
  9. Windows下tcp参数优化
  10. 微软全部正版软件下载地址和序列号索取