硬汉嵌入式论坛

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

[emWin] 向emwin窗口发送自定义按键消息死机

[复制链接]

31

主题

55

回帖

148

积分

初级会员

积分
148
发表于 2021-6-30 09:28:24 | 显示全部楼层 |阅读模式
本帖最后由 qingtianxiayi 于 2021-6-30 09:32 编辑

出现的现象:ucosii开启一个按键任务,负责通过GUI_SendKeyMsg发送按键、旋钮的信息给emwin窗口,在窗口中通过WM_KEY接收自定义的按键消息。


1、当按键任务栈设置为128时,GUI_SendKeyMsg发送按键信息会导致死机;
2、按键任务栈设置为128,只按按键,屏蔽掉GUI_SendKeyMsg不向窗口发信息,就不会死机;
3、当按键任务栈设置为512时也不会死机;


请问下按键任务的栈区大小怎么会出现这样的现象呢?

回复

使用道具 举报

15

主题

73

回帖

118

积分

初级会员

积分
118
发表于 2021-6-30 09:46:19 | 显示全部楼层
嵌套的函数越多,就会占用越多的栈空间,也许你加了GUI_SendKeyMsg之后刚好就达到了栈溢出的条件,自然就死机。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-6-30 09:48:29 | 显示全部楼层
说明任务栈确实小了。测试添加GUI_SendKeyMsg和不添加GUI_SendKeyMsg,栈大小都设置512,看看栈大小多少。
回复

使用道具 举报

31

主题

55

回帖

148

积分

初级会员

积分
148
 楼主| 发表于 2021-6-30 11:51:46 | 显示全部楼层
WSTON 发表于 2021-6-30 09:46
嵌套的函数越多,就会占用越多的栈空间,也许你加了GUI_SendKeyMsg之后刚好就达到了栈溢出的条件,自然就死 ...

是的 确实是栈溢出了
回复

使用道具 举报

31

主题

55

回帖

148

积分

初级会员

积分
148
 楼主| 发表于 2021-6-30 11:59:00 | 显示全部楼层
eric2013 发表于 2021-6-30 09:48
说明任务栈确实小了。测试添加GUI_SendKeyMsg和不添加GUI_SendKeyMsg,栈大小都设置512,看看栈大小多少。
...

按键任务设置大小为512*4字节,不添加GUI_SendKeyMsg栈大小使用276字节,添加GUI_SendKeyMsg栈使用1978字节,也马上超出了。
注:添加GUI_SendKeyMsg时,按键按下ok键切换到另一个界面时,按键的任务栈使用一下就到了1978字节。界面切换完 按键任务栈使用大小又降下来了。


怎么切换界面后 按键任务栈使用怎么会突然增加呢?




回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115812
QQ
发表于 2021-6-30 12:07:31 | 显示全部楼层
qingtianxiayi 发表于 2021-6-30 11:59
按键任务设置大小为512*4字节,不添加GUI_SendKeyMsg栈大小使用276字节,添加GUI_SendKeyMsg栈使用1978字 ...

说明这个函数需要较大的局部变量。

这里有个源码,可以看看

emWin5.06无码模板例子
http://www.armbbs.cn/forum.php?m ... 8971&fromuid=58
(出处: 硬汉嵌入式论坛)

回复

使用道具 举报

31

主题

55

回帖

148

积分

初级会员

积分
148
 楼主| 发表于 2021-6-30 12:13:44 | 显示全部楼层
eric2013 发表于 2021-6-30 12:07
说明这个函数需要较大的局部变量。

这里有个源码,可以看看

好的 谢谢!!! 我研究下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 15:21 , Processed in 0.486583 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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