OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4156|回复: 11

emwin界面切换固定次数界面后,按键失效,但是鼠标还可以动。

[复制链接]

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-5-25
在线时间
45 小时
发表于 2019-10-16 18:34:46 | 显示全部楼层 |阅读模式
10金钱
emwin界面切换固定次数界面后,按键失效,但是鼠标还可以动。有谁知道原因吗

最佳答案

查看完整内容[请看2#楼]

最后是用隐藏窗口和重新显示的方式来实现窗口的切换。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-5-25
在线时间
45 小时
 楼主| 发表于 2019-10-16 18:34:47 | 显示全部楼层

最后是用隐藏窗口和重新显示的方式来实现窗口的切换。
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-5-25
在线时间
45 小时
 楼主| 发表于 2019-10-16 20:30:18 | 显示全部楼层
用的是GUI_CreateDialogBox()创建对话框,点击按钮后在回调函数中用GUI_EndDialog(pMsg->hWin, 0);结束对话框,然后再用GUI_CreateDialogBox()创建新的对话框,以这样的形式实现不同界面的切换。切换9次后对话框失效,鼠标可以移动,但是按钮等控件失效不会进入回调函数执行对应的动作。我在网上找了很多都没有用,感觉入坑了。垃圾emwin.
回复

使用道具 举报

5

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
756
金钱
756
注册时间
2015-10-27
在线时间
180 小时
发表于 2019-10-17 08:41:31 | 显示全部楼层
可能是你每次创建对话框,然后删除对话框都会有内存碎片产生。多次测试以后,碎片累积,然后就没有足够的内存来创建新的对话框了。你可以试着改一下内存大小,试试到底是不是这样滴
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-5-25
在线时间
45 小时
 楼主| 发表于 2019-10-17 21:26:44 | 显示全部楼层
g753388438 发表于 2019-10-17 08:41
可能是你每次创建对话框,然后删除对话框都会有内存碎片产生。多次测试以后,碎片累积,然后就没有足够的内 ...

之前看过了,也试过了,没有用。不过不知道我理解的对不对。
1.我首先到GUIConf.c中将
//设置EMWIN内存大小
#define GUI_NUMBYTES  (500*1024)
#define GUI_BLOCKSIZE 0X80  //块大
的500改成800结果还是没有用。
回复

使用道具 举报

5

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
756
金钱
756
注册时间
2015-10-27
在线时间
180 小时
发表于 2019-10-18 11:32:42 | 显示全部楼层
科技论1 发表于 2019-10-17 21:26
之前看过了,也试过了,没有用。不过不知道我理解的对不对。
1.我首先到GUIConf.c中将
//设置EMWIN内存 ...

你有没有用操作系统,会不会你给的任务内存太小了,正好在临界点上了。
再查一下底层驱动是不是有问题。
尽可能直接用cubemx生成程序,有些容易忽略的地方就不会出错
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-5-25
在线时间
45 小时
 楼主| 发表于 2019-10-20 17:26:26 | 显示全部楼层
g753388438 发表于 2019-10-18 11:32
你有没有用操作系统,会不会你给的任务内存太小了,正好在临界点上了。
再查一下底层驱动是不是有问题。 ...

1.我有用系统是正点原子官方移植好了的例程,最新版本的EmWin扩展例程button例程进行修改。
2.对于任务内存,我在创建任务时给了2048
//EMWINDEMO任务
//设置任务优先级
#define EMWINDEMO_TASK_PRIO                        6
//任务堆栈大小
#define EMWINDEMO_STK_SIZE                        2048
//任务控制块
OS_TCB EmwindemoTaskTCB;
//任务堆栈
CPU_STK EMWINDEMO_TASK_STK[EMWINDEMO_STK_SIZE];
//emwindemo_task任务
void emwindemo_task(void *p_arg);
3.正常来说这个任务给的内存已经很大的了,应该不是内存问题,为了确保,我重新用GUIBuild做了两个framewin窗口,每个窗口里面只有一个按钮,当点击按钮进行界面切换,结果还是只能切换9次,所以应该不是内存太小的问题。
4.底层驱动是指UCOSiii和EmWin吗?这个是直接用正点原子,理论上是没有问题的。
5.没有用过cubemx,习惯用keil,应该不是这个问题。
回复

使用道具 举报

5

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
756
金钱
756
注册时间
2015-10-27
在线时间
180 小时
发表于 2019-10-21 16:07:43 | 显示全部楼层
科技论1 发表于 2019-10-20 17:26
1.我有用系统是正点原子官方移植好了的例程,最新版本的EmWin扩展例程button例程进行修改。
2.对于任务 ...

C:\Users\Administrator\Desktop\360截图16760920111135111.png

1、内存大小不只是操作系统的任务大小,还有emwin也需要设置内存大小的
2、cubemx生成的工程师HAL库,也可以使用keil编译。原子的例程可能是标准库
360截图16760920111135111.png
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-5-25
在线时间
45 小时
 楼主| 发表于 2019-10-23 19:03:23 | 显示全部楼层
g753388438 发表于 2019-10-21 16:07
1、内存大小不只是操作系统的任务大小,还有emwin也需要设置内存大小的
2、cubemx生成的工程师HAL库 ...

1.emwin的内存设置在4楼已经,实验过了,没有用。
2.觉得现在的问题,是切换界面方法,感觉这种切换界面的方法是有问题的。
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-5-25
在线时间
45 小时
 楼主| 发表于 2019-10-23 20:07:57 | 显示全部楼层
1.为了确保不是内存的问题,我测量了外部sram,内部sram,和ccm的使用率;
  1. case WM_NOTIFICATION_RELEASED:
  2.           GUI_EndDialog(hbutton2, 0);
  3.            printf("进入b1");       
  4.            printf("外部内存使用率为%d",mem_perused(SRAMEX));
  5.            printf("内部内存使用率为%d",mem_perused(SRAMIN));
  6.            printf("CCM使用率为%d\r\n",mem_perused(SRAMCCM));                                       
  7.                                          button1();//进入主界面       
  8.         // USER START (Optionally insert code for reacting on notification message)
  9.         // USER END
  10.         break;
复制代码

2.以下是我用串口观察的结果(没有一个内存使用超标,而且只能有9次切换界面)
进入b2外部内存使用率为62内部内存使用率为0CCM使用率为0
进入b1外部内存使用率为62内部内存使用率为0CCM使用率为0
进入b2外部内存使用率为62内部内存使用率为0CCM使用率为0
进入b1外部内存使用率为62内部内存使用率为0CCM使用率为0
进入b2外部内存使用率为62内部内存使用率为0CCM使用率为0
进入b1外部内存使用率为62内部内存使用率为0CCM使用率为0
进入b2外部内存使用率为62内部内存使用率为0CCM使用率为0
进入b1外部内存使用率为62内部内存使用率为0CCM使用率为0
进入b2外部内存使用率为62内部内存使用率为0CCM使用率为0


回复

使用道具 举报

0

主题

5

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-4-22
在线时间
6 小时
发表于 2019-11-3 10:20:07 | 显示全部楼层
科技论1 发表于 2019-10-23 20:07
1.为了确保不是内存的问题,我测量了外部sram,内部sram,和ccm的使用率;

2.以下是我用串口观察的结果( ...

你的问题解决了没?我也准备用哪  怕做到最后别也出现这样的问题了.就尴尬了
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-5-25
在线时间
45 小时
 楼主| 发表于 2019-11-3 10:52:48 | 显示全部楼层
HQB 发表于 2019-11-3 10:20
你的问题解决了没?我也准备用哪  怕做到最后别也出现这样的问题了.就尴尬了

没有弄好。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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