LPC1788读取SD卡图片问题

2019-07-15 17:45发布

我用lpc1788做一个图片显示的程序。刚开始试验时,是将24位图片转换成C语言数组,直接映射到显存地址,显示图片,图片显示正常。后来我按照这个思路,从SD卡读取显示图片,发现图片像素值错位了。我将pDst16数据通过串口发送出来发现和数组的形式是一样的,所以我现在不知道是哪个地方出了问题。
这个是正确的:
pDst16 = (unsigned long *)LCD_VRAM_BASE_ADDR;
pBmp8 = (uint8_t *)ac480x272Pic01;//数组转换成指针,并把高低位组合   
for(i=0;i<(C_GLCD_H_SIZE * C_GLCD_V_SIZE);i++)
{
  *pDst16 =*pBmp8++<<16;
  *pDst16 +=*pBmp8++<<8;
  *pDst16 +=*pBmp8++;
  *pDst16++;
}

错误的:
pDst16 = (unsigned long *)LCD_VRAM_BASE_ADDR;
for (i=0;i<480*272;i++)
{
  f_read(&bmpfsrc,&pColorData,3,&read_num);  // 每次读取三个像素
  pBmp8 = (uint8_t *)pColorData;             // 数组转换成指针
  *pDst16 =*pBmp8++<<16;
  *pDst16 +=*pBmp8++<<8;
  *pDst16 +=*pBmp8++;                        //  三个像素高低位组合,映射到LCD地址上
  //xprintf("%d:%x ",i,*pDst16++);      
}

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