|
请教下,rgb 屏的 横竖屏显示问题 ??
目前初始化
#define LCD_PIXEL_WIDTH ((uint16_t)800)//水平宽度
#define LCD_PIXEL_HEIGHT ((uint16_t)1280)//垂直宽度
static void BSP_LTDC_LayerInit(void) // 这个函数只初始化一次
{
LTDC_LayerCfgTypeDef pLayerCfg;
// 配置本层的窗口边界,注意这些参数是包含HBP HSW VBP VSW的
pLayerCfg.WindowX0 = 0;
pLayerCfg.WindowX1 = LCD_PIXEL_WIDTH; // 在横竖屏显示时,此值固定不变
pLayerCfg.WindowY0 = 0;
pLayerCfg.WindowY1 = LCD_PIXEL_HEIGHT; // 在横竖屏显示时,此值固定不变
pLayerCfg.PixelFormat = LTDC_USER_PIXFORMAT;
pLayerCfg.Alpha = 255;
pLayerCfg.Alpha0 = 0;
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
pLayerCfg.FBStartAdress = LCD_FRAME_BUFFER_LAYER0;
pLayerCfg.ImageWidth = LCD_PIXEL_WIDTH; // 在横竖屏显示时,此值固定不变
pLayerCfg.ImageHeight = LCD_PIXEL_HEIGHT; // 在横竖屏显示时,此值固定不变
pLayerCfg.Backcolor.Blue = 0;
pLayerCfg.Backcolor.Green = 0;
pLayerCfg.Backcolor.Red = 0;
HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) ;
}
/*
函数功能:计数显示字符的输出地址
函数名称:BSP_LCD_PutPixelAddr
返回值: 返回计算后的字符输出地址数据
*/
uint32_t BSP_LCD_PutPixelAddr(uint16_t Xpos, uint16_t Ypos)
{
uint32_t index = 0;
if (g_LcdDirection == 0) // 竖屏
{
index = (LTDC_PIX_SIZE * (uint32_t)(Ypos * LCD_PIXEL_WIDTH + Xpos));
}
else if (g_LcdDirection == 1) // 横屏
{
index = (LTDC_PIX_SIZE * (uint32_t)(Xpos * LCD_PIXEL_WIDTH + (LCD_PIXEL_WIDTH - Ypos - 1)));
}
else if (g_LcdDirection == 2) // 竖屏180°
{
index = (LTDC_PIX_SIZE * (uint32_t)((LCD_PIXEL_HEIGHT - Ypos - 1) * LCD_PIXEL_WIDTH + (LCD_PIXEL_WIDTH - Xpos - 1)));
}
else if (g_LcdDirection == 3) // 横屏180°
{
index = (LTDC_PIX_SIZE * (uint32_t)((LCD_PIXEL_HEIGHT - Xpos - 1) * LCD_PIXEL_WIDTH + Ypos));
}
return index;
}
目前能够实现四个方向的正常显示
如果按照上面的设置,程序长期运行不知道会不会有什么问题啊 ?????? |
|