OpenEdv-开源电子网

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

数组扩大后,编译器没说出错但程序运行不了

[复制链接]

3

主题

8

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-1-12
在线时间
0 小时
发表于 2015-3-10 10:52:44 | 显示全部楼层 |阅读模式
5金钱
u16 *q,wordcolor=0xf100; u8 a,b,numchar[5],input[]={' ',' ',' ',' ',' '},i,k; u16 xy[5][2],lcdx,lcdy,scannum,j,cache1[300],cache2[300]; 主函数就定义这些变量,当把cache1和cache2的大小都变到500的时候,程序就执行不了了,用的是战舰开发板,要是RAM不够大的话,编译器会报错吗?

最佳答案

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

你是在函数内部还是外部定义的 在内部,堆栈不够 声明成全局数组
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6758

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12995
金钱
12995
注册时间
2012-11-26
在线时间
3790 小时
发表于 2015-3-10 10:52:45 | 显示全部楼层
你是在函数内部还是外部定义的

在内部,堆栈不够

声明成全局数组
学无止境
回复

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-1-12
在线时间
0 小时
 楼主| 发表于 2015-3-10 17:34:31 | 显示全部楼层
回复【2楼】jermy_z:
---------------------------------
'大哥正解啊,在内部,换到外面果断可以了,不过这里的堆栈是什么意思,为什么会有这个,堆栈不是在保护断点的时候才用的吗?
回复

使用道具 举报

70

主题

6758

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12995
金钱
12995
注册时间
2012-11-26
在线时间
3790 小时
发表于 2015-3-10 17:39:54 | 显示全部楼层
回复【3楼】微粒:
---------------------------------
自行百度堆栈
学无止境
回复

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-1-12
在线时间
0 小时
 楼主| 发表于 2015-3-10 17:52:11 | 显示全部楼层
回复【4楼】jermy_z:
---------------------------------
好的,谢谢,帮了个大忙
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
发表于 2016-7-26 10:46:03 | 显示全部楼层
jermy_z 发表于 2015-3-10 10:52
你是在函数内部还是外部定义的

在内部,堆栈不够

声明成全局数组

您好,我现在也遇到了类似问题。但是我一直定义的就是全局数组啊,数据量扩大一点以后是程序不报错,但是只能运行一半。当数据量在扩大以后,提醒Error: L6406E: No space in execution regions with .ANY selector matching main.o(.bss).   麻烦您我改怎么解决?
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
发表于 2016-7-27 15:22:54 | 显示全部楼层
lol 发表于 2016-7-26 10:46
您好,我现在也遇到了类似问题。但是我一直定义的就是全局数组啊,数据量扩大一点以后是程序不报错,但是 ...

你这个是不是内存不够用了,这个提示上说了“No space”啊。
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
发表于 2016-7-28 10:52:25 | 显示全部楼层
czdspeed 发表于 2016-7-27 15:22
你这个是不是内存不够用了,这个提示上说了“No space”啊。

对,我把要定义的全局数组用at+地址的方式定义定义到了外部SRAM,现在不提示NO SPACE 了,这个问题算解决了。但是当我把程序烧进板子的时候,屏幕白屏什么也不显示,这个是什么原因您清楚吗?
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
发表于 2016-7-28 15:49:09 | 显示全部楼层
lol 发表于 2016-7-28 10:52
对,我把要定义的全局数组用at+地址的方式定义定义到了外部SRAM,现在不提示NO SPACE 了,这个问题算解决 ...

你单步设置断点跑一下看看能不能运行吧,我不知道这个是否加载了驱动。如果没有加载白屏很正常啊。
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
发表于 2016-7-28 16:38:54 | 显示全部楼层
czdspeed 发表于 2016-7-28 15:49
你单步设置断点跑一下看看能不能运行吧,我不知道这个是否加载了驱动。如果没有加载白屏很正常啊。

恩,加载了驱动。现在情况是数组小的时候是都正常,当数组变大以后烧进去就白屏,外部SRAM用的多难道就白屏吗?
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
发表于 2016-7-28 16:46:36 | 显示全部楼层
你单步走流程还正确吗,如果正确就不要管白屏的问题了,那个可能是点亮了背光吧。我也不是太清楚。
回复

使用道具 举报

14

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
296
金钱
296
注册时间
2016-6-23
在线时间
29 小时
发表于 2016-7-28 21:48:13 | 显示全部楼层
czdspeed 发表于 2016-7-28 16:46
你单步走流程还正确吗,如果正确就不要管白屏的问题了,那个可能是点亮了背光吧。我也不是太清楚。

好吧,还是谢谢您啦
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 21:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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