使用rgb888格式,在清贫切换时,屏幕会有杂乱的条纹出现?

2019-07-20 16:21发布

使用rgb888格式,在清贫切换时,屏幕会有杂乱的条纹出现?

但是使用 ARGB8888, RGB565的格式时貌似木有,是怎么个情况 ???

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
wmaxwell
1楼-- · 2019-07-20 19:18
 精彩回答 2  元偷偷看……
hpdell
2楼-- · 2019-07-20 19:31
wmaxwell 发表于 2017-3-9 09:24
这个应该不会的啊,看看你的代码呢,DMA方式驱动应该清屏超快的

void BSP_LCD_Clear(uint32_t Color)
{

#if   0
  // Register to memory mode with ARGB8888 as color Mode  
  hdma2d_eval.Init.Mode         = DMA2D_R2M;
  hdma2d_eval.Init.ColorMode    = LTDC_USER_PIXFORMAT;
  hdma2d_eval.Init.OutputOffset = 0;      

  hdma2d_eval.Instance  = DMA2D;

  // DMA2D Initialization
  if(HAL_DMA2D_Init(&hdma2d_eval) == HAL_OK)
  {
    if(HAL_DMA2D_ConfigLayer(&hdma2d_eval, ActiveLayer) == HAL_OK)
    {
      if (HAL_DMA2D_Start(&hdma2d_eval, Color, (hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress), BSP_LCD_GetXSize() , BSP_LCD_GetYSize() ) == HAL_OK)
      {
        // Polling For DMA transfer
        HAL_DMA2D_PollForTransfer(&hdma2d_eval, DMA2D_TIMEOUT);   // 超时时间需要设置大些,否则清贫时会返回超时错误
      }
    }
  }

#else
  u32 addr;
  u32 timeout = 0;


        addr=((u32)(hltdc_eval.LayerCfg[ActiveLayer].FBStartAdress) + LTDC_PIX_SIZE * ((LCD_PIXEL_WIDTH ) * 0 + 0));
        RCC->AHB1ENR |= 1 << 23;                        //使能DM2D时钟
        DMA2D->CR     = 3 << 16;                                //寄存器到存储器模式
        DMA2D->OPFCCR = LTDC_USER_PIXFORMAT;        //设置颜 {MOD}格式
        DMA2D->OOR    = 0;                                //设置行偏移
        DMA2D->CR    &= ~(1 << 0);                                //先停止DMA2D
        DMA2D->OMAR   = addr;                                //输出存储器地址
        DMA2D->NLR    = (1280) | ((800) << 16);        //设定行数寄存器
        DMA2D->OCOLR  = Color;                                //设定输出颜 {MOD}寄存器
        DMA2D->CR    |= 1 << 0;                                //启动DMA2D
        while((DMA2D->ISR & (1 << 1)) == 0)        //等待传输完成
        {
                timeout++;
                if(timeout > 0X1FFFFF) break;        //超时退出
        }  
        DMA2D->IFCR |= 1 << 1;                                //清除传输完成标志  


#endif

}






一周热门 更多>