我的测试代码
[C] 纯文本查看 复制代码 /* 第3个图:显示RGB565位图 ##############################################################*/
LCD_DispStr(328, 2, "刷RGB565位图", &tFont);
_DMA2D_Copy((uint32_t *)bitmapStLogo_162x124, /* 位图地址 */
(uint32_t *)(SDRAM_LCD_BUF1 + g_LcdWidth*20*2 + 328*2), /* 显示起始地址(328, 20) */
162, /* 位图长 */
124, /* 位图高 */
0, /* 位图行偏移 */
g_LcdWidth-162, /* 目标区行偏移 */
LTDC_PIXEL_FORMAT_RGB565); /* 目标区颜色格式 */
[C] 纯文本查看 复制代码 /*
*********************************************************************************************************
* 函 数 名: _DMA2D_Copy
* 功能说明: 通过DMA2D从前景层复制指定区域的颜色数据到目标区域
* 形 参: pSrc 颜色数据源地址
* pDst 颜色数据目的地址
* xSize 目的区域的X轴大小,即每行像素数
* ySize 目的区域的Y轴大小,即行数
* OffLineSrc 前景层图像的行偏移
* OffLineDst 输出的行偏移
* PixelFormat 目标区颜色格式
* 返 回 值: 无
*********************************************************************************************************
*/
static void _DMA2D_Copy(void * pSrc,
void * pDst,
uint32_t xSize,
uint32_t ySize,
uint32_t OffLineSrc,
uint32_t OffLineDst,
uint32_t PixelFormat)
{
/* DMA2D采用存储器到存储器模式, 这种模式是前景层作为DMA2D输入 */
DMA2D->CR = 0x00000000UL | (1 << 9);
DMA2D->FGMAR = (uint32_t)pSrc;
DMA2D->OMAR = (uint32_t)pDst;
DMA2D->FGOR = OffLineSrc;
DMA2D->OOR = OffLineDst;
/* 前景层和输出区域都采用的RGB565颜色格式 */
DMA2D->FGPFCCR = LTDC_PIXEL_FORMAT_RGB565;
DMA2D->OPFCCR = LTDC_PIXEL_FORMAT_RGB565;
DMA2D->NLR = (uint32_t)(xSize << 16) | (uint16_t)ySize;
/* 启动传输 */
DMA2D->CR |= DMA2D_CR_START;
/* 等待DMA2D传输完成 */
while (DMA2D->CR & DMA2D_CR_START) {}
}
|