你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在STM32F429上使用ST-emWin创建三个图层

[复制链接]
terencejia 提问时间:2016-8-3 08:32 /
在学习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里的配置一样。
收藏 评论2 发布时间:2016-8-3 08:32

举报

2个回答
terencejia 最优答案 回答时间:2016-8-3 13:54:02
原因找到了,是stm32f429只支持两层显示

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

terencejia 回答时间:2016-8-3 09:23:13
自己顶一下
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版