下面通过初始化LCD的函数,将LCD屏幕清屏为全白:
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] : LCD清屏,使用DMA2D将颜色数据传输到内存中
- * @par Full description : 填充范围是坐标(sx,sy),(ex,ey)形成的矩形区域,
- * 区域大小像素点个数是:(ex-sx+1)*(ey-sy+1)
- * @param :
- * sx -- x轴起点坐标
- * sy -- y轴起点坐标
- * ex -- x轴终点坐标
- * ey -- y轴终点坐标
- * Colour -- 填充的颜色
- * @retval : 无
- */
- void LcdClear(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint32_t Colour)
- {
- __HAL_RCC_DMA2D_CLK_ENABLE(); //使能DMA2D时钟
- DMA2D->CR &= ~(DMA2D_CR_START); //先停止DMA2D
- DMA2D->CR = DMA2D_R2M; //寄存器到存储器模式
- DMA2D->OPFCCR = LTDC_PIXEL_FORMAT_RGB565; //设置颜色格式
- DMA2D->OOR = 0; //设置行偏移
- DMA2D->OMAR = uhLtdcFrameBuf; //输出存储器地址
- DMA2D->NLR = (ey - sy + 1) | ((ex - sx + 1) << 16); //设定行数寄存器
- DMA2D->OCOLR = Colour; //设定输出颜色寄存器
- DMA2D->CR |= DMA2D_CR_START; //启动DMA2D
- while((DMA2D->ISR & DMA2D_FLAG_TC) == 0); //等待传输完成
- DMA2D->IFCR |= DMA2D_FLAG_TC; //清除传输完成标志
- }
-
- void LcdInit(void)
- {
- LCD_BIAS_LIGHT_ENALBE; //使能LCD背光
- LcdClear(0, 0, 479, 271, 0xFFFF); //清屏全白,0xFFFF是全白
- }
|