OpenEdv-开源电子网

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

请教代码问题。。

[复制链接]

3

主题

16

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-12-23
在线时间
0 小时
发表于 2015-1-25 22:31:21 | 显示全部楼层 |阅读模式
5金钱
void mainmenu()     //主菜单
{
    whiile(1)
    {
    if(某操作)
    test();        
    }    
}
void test()
{
    u32 idno[151];
    while(1)
    {
    if(某操作)
    mainmenu();      //返回主菜单
    }
}
我用的是mini开发板。这个某操作指的是屏幕上某个地方被触摸,
我通过触摸屏幕在这两个函数之间跳来跳去的3次就白屏了,然后就只能复位
调试了一段时间,发现我把这个u32 idno[151]数组长度改成51,然后7次,屏幕上的字就会乱码了,
再改成21,来回跳转14次就又乱码了。。。。


请问一下这可能是什么问题呢。


最佳答案

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

你这,,,,,貌似成了递归调用了吧,一直按键无限递归堆栈肯定溢出了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2015-1-25 22:31:22 | 显示全部楼层
你这,,,,,貌似成了递归调用了吧,一直按键无限递归堆栈肯定溢出了
回复

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2015-1-25 22:31:22 | 显示全部楼层
SRAM溢出了吧,其他地方是不是还有很占空间的,放到全局就不占用SRAM了
博观而约取,厚积而薄发。
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-12-23
在线时间
0 小时
 楼主| 发表于 2015-1-25 22:34:16 | 显示全部楼层
用mini开发板做了一个MFrc522的学生考勤的小东西,已经做好了,测试的时候发现这个问题。
回复

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2015-1-25 23:01:56 | 显示全部楼层
u32的长度,151个的求组是不是太大了
博观而约取,厚积而薄发。
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-12-23
在线时间
0 小时
 楼主| 发表于 2015-1-25 23:13:19 | 显示全部楼层
回复【3楼】745021926:
---------------------------------
老师晚上好。。这个数组改小了是有所改善,但是为什么这个数组会有影响呢。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-25 23:18:46 | 显示全部楼层
局部数组太大,直接放全局变量吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-12-23
在线时间
0 小时
 楼主| 发表于 2015-1-25 23:35:37 | 显示全部楼层
回复【7楼】745021926:
---------------------------------
好的。谢谢老师。放在全局确实可以。。。学习了
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-12-23
在线时间
0 小时
 楼主| 发表于 2015-1-25 23:37:05 | 显示全部楼层
回复【5楼】as564335sa:
---------------------------------
学习了。。。
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-12-23
在线时间
0 小时
 楼主| 发表于 2015-1-25 23:37:18 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
学习了。。。
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2015-1-25 23:41:02 | 显示全部楼层
回复【10楼】神秘又顽皮:
---------------------------------
放全局,多按几次可以吗,感觉你这程序进了一个函数就不会再出来了,而是按键在里面无限调用,跟递归差不多了,数组放全局,只是可以多按几次吧,循环多了堆栈还是得溢出
回复

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2015-1-25 23:44:03 | 显示全部楼层
回复【11楼】as564335sa:
---------------------------------
放在全局以后递归了也还是用的申请好的空间,应该不会再溢出了
博观而约取,厚积而薄发。
回复

使用道具 举报

14

主题

338

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2013-6-15
在线时间
15 小时
发表于 2015-1-25 23:49:03 | 显示全部楼层
回复【12楼】745021926:
---------------------------------
但是调用函数的时候不会有其他的数据需要压栈吗,这个我不太清楚,只是觉的这种程序结构不太好,不安全
回复

使用道具 举报

39

主题

2026

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2020
金钱
2020
注册时间
2013-5-1
在线时间
87 小时
发表于 2015-1-26 07:43:27 | 显示全部楼层
回复【13楼】as564335sa:
---------------------------------
嗯,上面的问题确实是递归造成的,LZ还是把函数结构改改,不用就return掉
博观而约取,厚积而薄发。
回复

使用道具 举报

3

主题

16

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2014-12-23
在线时间
0 小时
 楼主| 发表于 2015-1-26 12:27:05 | 显示全部楼层
回复【11楼】as564335sa:
---------------------------------
放全局改善很大,除了这个数组其他都是一些小变量。。之前不知道有这个堆栈的问题,谢谢啦
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-26 08:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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