初级会员

- 积分
- 68
- 金钱
- 68
- 注册时间
- 2017-4-17
- 在线时间
- 25 小时
|
发表于 2020-9-29 23:16:21
|
显示全部楼层
uint32_t timeout=0;
uint16_t offline;
uint32_t addr;
offline=LCD_PIXEL_WIDTH-(ex-sx+1);
//指定绘制的首地址
addr = CurrentFrameBuffer+2*(800*sy+sx);
__HAL_RCC_DMA2D_CLK_ENABLE(); //使能 DM2D 时钟
DMA2D->CR&=~(DMA2D_CR_START); //先停止 DMA2D
DMA2D->CR=DMA2D_R2M; //寄存器到存储器模式
DMA2D->OPFCCR=LTDC_PIXEL_FORMAT_RGB565; //设置颜色格式
DMA2D->OOR = offline; //设置行偏移
DMA2D->OMAR = addr; //输出存储器地址
DMA2D->NLR = (ey-sy+1)|((ex-sx+1)<<16); //设定行数寄存器
DMA2D->OCOLR=Color; //设定输出颜色寄存器
DMA2D->CR|=DMA2D_CR_START; //启动DMA2D
while((DMA2D->ISR&(1<<1))==0) //等待传输完成
{
timeout++;
if(timeout>0X1FFFFF)
break; //超时退出
}
DMA2D->IFCR|=1<<1; //清除传输完成标志 |
|