硬汉嵌入式论坛

 找回密码
 立即注册
查看: 772|回复: 6
收起左侧

[emWin] emwin创建窗口不显示

[复制链接]

10

主题

35

回帖

65

积分

初级会员

积分
65
发表于 2022-4-29 18:22:12 | 显示全部楼层 |阅读模式
1、应用层按照硬汉哥提供的裸机源码直接copy的,运行之后黑屏,看硬汉哥在别的帖子下的回复,并仿照例程,将GUI_delay中的时间配置好了,但是依然没有显示;
2、之后尝试在创建窗口之后直接刷屏,刷屏动作执行成功,但是有块黑屏;
3、跟踪调试在DMA2d中断函数打断点,能一条条的刷出红色的边框;
4、看硬汉哥在别的帖子里的回复:“emwin显示控件会调用16bpp函数”,我在 _LCD_DrawBitmap16bpp函数中打断点,没触发过...
5、麻烦大哥们帮忙看下是什么问题,是底层哪里没配置好吗?

代码片段:
void MainTask(void)
{
    /* 初始化 */
    GUI_Init();
    WM_MULTIBUF_Enable(1);      
    /* 创建对话框 */
    CreateFramewin1();
//创建完对话框后尝试刷屏

    GUI_SetBkColor(GUI_RED);
    GUI_Clear();
    GUI_SetFont(&GUI_Font16_ASCII);
    GUI_DispStringAt("Hello World!!!",0,0);  

//
    while(1)
    {
        GUI_Delay(50);
    }
}


微信图片_20220429181446.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107137
QQ
发表于 2022-4-30 11:57:30 | 显示全部楼层
函数WM_MULTIBUF_Enable(1);  注释掉测下。

另外底层仅执行打点操作,不要做任何DMA2D优化试试,也就是将DMA2D重定向的那几个函数都注释掉。
回复

使用道具 举报

10

主题

35

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2022-5-1 21:40:54 | 显示全部楼层
eric2013 发表于 2022-4-30 11:57
函数WM_MULTIBUF_Enable(1);  注释掉测下。

另外底层仅执行打点操作,不要做任何DMA2D优化试试,也就是 ...

谢谢硬汉哥  我把WM_MULTIBUF_Enable(1);屏蔽之后就能显示了
回复

使用道具 举报

10

主题

35

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2022-5-1 21:42:01 | 显示全部楼层
显示 结果是这样,我再去查一下三重缓存的问题,谢谢
微信图片_20220501205239.jpg
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107137
QQ
发表于 2022-5-3 07:52:00 | 显示全部楼层
Ghanfu 发表于 2022-5-1 21:42
显示 结果是这样,我再去查一下三重缓存的问题,谢谢

那基本上可以锁定是三缓冲的问题了。
回复

使用道具 举报

10

主题

35

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2022-5-3 16:55:38 | 显示全部楼层
eric2013 发表于 2022-5-3 07:52
那基本上可以锁定是三缓冲的问题了。

啊  我又搞了两天,还是没显示,没找出来多缓冲哪里配置的不对,我用的emwin5.44的版本... 看您给的文档里,配置点就那几个啊  ...
回复

使用道具 举报

10

主题

35

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2022-5-4 11:03:39 | 显示全部楼层
问题找到了,被几个小地方卡住了..,第一次接触显示驱动,底层配置的有点乱
1.我用的是HAL库,例程中的 “LTDC_ITConfig(LTDC_IER_LIE, ENABLE);”笔误弄成“__HAL_LTDC_DISABLE_IT(&hltdc, LTDC_IT_LI);”,行中断没开启;
2.用cubeMX生成的代码LTDC控制器、层显示程序都在一个函数里,套用例程的是时候直接把这个函数放在了例程 层初始化 代码位置,导致开启LTDC行中断步骤在LTDC初始化步骤之前,第1条的行中断未正常开启;

给像我一样的小白们提个醒:emwin中文手册里把多缓冲问题写得很清楚,内存copy、中断等,按照步骤调试打断点就能发现问题了...  我这个就是LTDC中断服务函数进不去
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-20 03:30 , Processed in 0.280064 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表