请教下,dma2d 图形显示 ???

2019-07-20 15:18发布

请教下,dma2d 图形显示 ???
#define LCD_PIXEL_WIDTH   600
#define LCD_PIXEL_HEIGHT  1024

        uint16_t  OutputOffset = 0;     // 行偏移
        uint16_t  NumberOfLine = 0;     // 行数,表示我们显示的数据需要的行数
        uint16_t  PixelPerLine = 0;            // 每行像素数, 每行需要显示多少个像素点

if (g_LcdDirection == 0)        /* 竖屏  这个显示没有问题*/
  {
    OutputOffset = LCD_PIXEL_WIDTH - _usWidth;
                NumberOfLine = _usHeight ;
                PixelPerLine = _usWidth;
  }

  else if (g_LcdDirection == 2)        /* 竖屏 180°   这个显示就乱了,请教下这个地方改如何计算才正确 ??????????????????????? */
  {
    OutputOffset = LCD_PIXEL_WIDTH - (LCD_PIXEL_WIDTH - _usWidth);
                NumberOfLine = _usHeight ;
                PixelPerLine = _usWidth;  
  }


  /* Set up mode */
  DMA2D->CR      = 0x00030000UL | (1 << 9);        
  DMA2D->OCOLR   = ColorIndex;                     
  DMA2D->CR &= ~ (1 << 0);                                //先停止DMA2D,可以不使用
  DMA2D->OMAR    = (uint32_t)Xaddress;                     
  DMA2D->OOR &= ~(uint32_t)DMA2D_OOR_LO;
  DMA2D->OOR |= OutputOffset;                       
  /* 配置输出的颜 {MOD}模式为 RGB565 */
  DMA2D->OPFCCR = LTDC_USER_PIXFORMAT;                    
  DMA2D->NLR = (NumberOfLine | (PixelPerLine << 16));
  DMA2D->CR     |= DMA2D_CR_START;
  /* Wait until transfer is done */
  while (DMA2D->CR & DMA2D_CR_START)
  {
  }














友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。