|
在学习ST-emWin多图层的时候,大多数例子都是双图层,尝试配置三图层,做了如下改动:
1、把最大层数GUI_NUM_LAYERS定义为3;
2、为第三层分配内存空间
3、在LCD_LL_LayerInit中添加对第三层的初始化
4、在LCD_X_Config函数中添加第三层的配置
#if (GUI_NUM_LAYERS > 2)
/* Set display driver and color conversion for 3nd layer */
GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER_2, COLOR_CONVERSION_2, 0, 2);
/* Set size of 3nd layer */
if (LCD_GetSwapXYEx(2)) {
LCD_SetSizeEx (2, XSIZE_PHYS_LAYER3, YSIZE_PHYS_LAYER3);
LCD_SetVSizeEx(2, XSIZE_PHYS_LAYER3, YSIZE_PHYS_LAYER3 * NUM_VSCREENS);
} else {
LCD_SetSizeEx (2, XSIZE_PHYS_LAYER3, YSIZE_PHYS_LAYER3);
LCD_SetVSizeEx(2, XSIZE_PHYS_LAYER3, YSIZE_PHYS_LAYER3 * NUM_VSCREENS);
}
LCD_SetVisEx(2, 1);
#endif
编译完成后下载到stm32f429板子上运行,结果发现LCD_X_DisplayDriver函数只能接收到第一和第二层的消息,而没有对第三层的响应,比如
case LCD_X_INITCONTROLLER:
LCD_LL_LayerInit(LayerIndex);
break;
以及
case LCD_X_SETVIS:
if(((LCD_X_SETVIS_INFO *)pData)->OnOff == ENABLE )
{
__HAL_LTDC_LAYER_ENABLE(&hltdc, LayerIndex);
}
else
{
__HAL_LTDC_LAYER_DISABLE(&hltdc, LayerIndex);
}
__HAL_LTDC_RELOAD_CONFIG(&hltdc);
break;
导致第三层无法正常工作。
请高手帮忙分析一下,是不是显示器驱动有问题,还有什么地方没有配置对?如何实现三图层显示?
PS:在emwin模拟器上能够成功实现三图层,LCD_X_Config里的配置一样。 |
|