打印
[STM32F7]

emwin 移植之后显示错乱

[复制链接]
803|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近在研究emwin,使用 STM32F7 LTDC驱动RGB屏幕;移植了emwin之后,使用  GUI_DispString("Hello world!"); 打印到屏幕上,发现显示是错乱的;求助大侠!


IMG20201117110357.jpg (370.83 KB )

IMG20201117110357.jpg

使用特权

评论回复
沙发
xiaofei558008|  楼主 | 2020-11-17 11:09 | 只看该作者
static void _SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, int PixelIndex) {
    //
    // Convert logical into physical coordinates (Dep. on LCDConf.h)
    //
    #if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)
      int xPhys, yPhys;

      xPhys = LOG2PHYS_X(x, y);
      yPhys = LOG2PHYS_Y(x, y);
    #else
      #define xPhys x
      #define yPhys y
    #endif
    GUI_USE_PARA(pDevice);
    GUI_USE_PARA(x);
    GUI_USE_PARA(y);
    GUI_USE_PARA(PixelIndex);
    {
      //
      // Write into hardware ... Adapt to your system
      //
      __LCD_RAM[x][y] = (uint16_t)PixelIndex;
      //
    }
    #if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)
      #undef xPhys
      #undef yPhys
    #endif
}

使用特权

评论回复
评论
xiaofei558008 2020-11-17 11:10 回复TA
static unsigned int _GetPixelIndex(GUI_DEVICE * pDevice, int x, int y) { unsigned int PixelIndex; // // Convert logical into physical coordinates (Dep. on LCDConf.h) // #if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1) int xPhys, yPhys; xPhys = LOG2PHYS_X(x, y); yPhys = LOG2PHYS_Y(x, y); #else #define xPhys x #define yPhys y #endif GUI_USE_PARA(pDevice); GUI_USE_PARA(x); GUI_USE_PARA(y); { //  
板凳
xiaofei558008|  楼主 | 2020-11-17 11:11 | 只看该作者
xiaofei558008 发表于 2020-11-17 11:09
static void _SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, int PixelIndex) {
    //
    // Conve ...

static unsigned int _GetPixelIndex(GUI_DEVICE * pDevice, int x, int y) {
  unsigned int PixelIndex;
    //
    // Convert logical into physical coordinates (Dep. on LCDConf.h)
    //
    #if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)
      int xPhys, yPhys;

      xPhys = LOG2PHYS_X(x, y);
      yPhys = LOG2PHYS_Y(x, y);
    #else
      #define xPhys x
      #define yPhys y
    #endif
    GUI_USE_PARA(pDevice);
    GUI_USE_PARA(x);
    GUI_USE_PARA(y);
    {
      //
      // Write into hardware ... Adapt to your system
      //
      PixelIndex = __LCD_RAM[x][y];
      //
    }
    #if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)
      #undef xPhys
      #undef yPhys
    #endif
  return PixelIndex;
}

只改了这两个函数,__LCD_RAM[480][272]是全局变量,做LCD显示缓存,没有用外部 SDRAM

使用特权

评论回复
地板
数据采集存储| | 2020-11-17 11:20 | 只看该作者
我为什么没有看明白你的代码??

使用特权

评论回复
5
xiaofei558008|  楼主 | 2020-11-17 11:33 | 只看该作者
数据采集存储 发表于 2020-11-17 11:20
我为什么没有看明白你的代码??

emwin库的代码

使用特权

评论回复
6
xiaofei558008|  楼主 | 2020-11-17 14:03 | 只看该作者
问题找到了,自问自答一下,
__LCD_RAM[x][y]  --> 改成 __LCD_RAM[y][x] ;
内存排错了;

使用特权

评论回复
7
别看我照片| | 2020-11-17 19:00 | 只看该作者
我静然看不懂,好久没有看C语言编程嘞哎,,,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

137

主题

971

帖子

13

粉丝