请教下,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)
{
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>