一、LCD画点函数
画点函数,计算过程如下图所示
输入参数:
uint16_t Xpos: 输入画点的x坐标
uint16_t Ypos:输入画点的y坐标
RGB_Code: 像素颜色
代码实现:
- hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress: 数据存放在SDRAM中的起始地址,初始化时定义
- 如果LTDC_PIXEL_FORMAT_RGB565,则一个像素点占两个字节(5+6+5=16)。如果是RGB888则占四个字节
- RGB_Code:像素颜色
/**
* @brief Draws a pixel on LCD.
* @param Xpos: X position
* @param Ypos: Y position
* @param RGB_Code: Pixel color in ARGB mode (8-8-8-8)
* @retval None
*/
void BSP_LCD_DrawPixel(uint16_t Xpos, uint16_t Ypos, uint32_t RGB_Code)
{
/* Write data value to all SDRAM memory */
if(hLtdcHandler.LayerCfg[ActiveLayer].PixelFormat == LTDC_PIXEL_FORMAT_RGB565)
{ /* RGB565 format */
*(__IO uint16_t*) (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress + (2*(Ypos*BSP_LCD_GetXSize() + Xpos))) = (uint16_t)RGB_Code;
}
else
{ /* ARGB8888 format */
*(__IO uint32_t*) (hLtdcHandler.LayerCfg[ActiveLayer].FBStartAdress + (4*(Ypos*BSP_LCD_GetXSize() + Xpos))) = RGB_Code;
}
}
二、LCD显示图片
1、利用Image2Lcd对将要显示的图片进行取模,注意选择输出格式要与代码进行匹配,我们这里选择的是16位RGB565格式
2、将生成的.c文件复制到一个新建的.h文件代码中
3、LCD显示图片函数
输入参数:
x:图片起始x地址
y:图片起始y坐标
width:图片宽度
height:图片高度
src:16进制图片内容
drawpirture(10, 10, RES_W, RES_H, (uint16_t *)gImage_test);
调用BSP_LCD_DrawPixel()画点函数,画图的本质就是逐行将图片的像素进行显示
void drawpirture(uint32_t x, uint32_t y, uint32_t width, uint32_t height,
uint16_t *src) {
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
uint16_t color = src[i * width + j];
BSP_LCD_DrawPixel(x + j, y + i, color);
}
}
}