自己写的代码如下图所示,程序编译没问题,将m【5000】改为m【500】程序可以正常运行,但5000就不行,这是为什么啊?

2019-10-16 05:22发布


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
密耳
1楼-- · 2019-10-17 01:51
dengxingling8 发表于 2016-12-2 15:54
栈空间过大(即使大于SRAM)并不会产生警告或者错误,在运行过程中,只要没有使用到和变量冲突的地址,程序 ...

栈空间过大,编译的时候一定会提示RAM定义过大不够了!他这个定义问题定义m【500】或m【5000】应该是编译了,,没提示警告,说明RAM空间够用,,运行不起来,应该类似于数组越界....  我没太细看STM32的堆栈手册内容。。谁来解释下zuozhongkai(版主)的“
数组m为5000,那么需要使用到的栈空间就是5000*2=10000个字节=10K。看一下你设置的栈空间有没有这么大!!!”这句话,对吗?
密耳
2楼-- · 2019-10-17 02:32
zuozhongkai 发表于 2016-12-2 15:39
数组m为5000,那么需要使用到的栈空间就是5000*2=10000个字节=10K。看一下你设置的栈空间有没有这么大!! ...

看了下,你说的对,,LZ居然定义的局部变量,这样在压栈的时候会出现问题。把m[5000]改成全局变量试下!!!
dengxingling8
3楼-- · 2019-10-17 04:35
本帖最后由 dengxingling8 于 2016-12-2 16:34 编辑
密耳 发表于 2016-12-2 16:06
栈空间过大,编译的时候一定会提示RAM定义过大不够了!他这个定义问题定义m【500】或m【5000】应该是编译 ...

丝毫没有问题,片子SRAM大小8K,测试代码有问题,不过和讨论的问题无关了

密耳
4楼-- · 2019-10-17 07:02
dengxingling8 发表于 2016-12-2 16:28
丝毫没有问题,片子SRAM大小8K,测试代码有问题,不过和讨论的问题无关了

你改的堆栈大小还是你的test[1000*1024]大小?你这样定义个局部变量。。???没问题?????????
密耳
5楼-- · 2019-10-17 07:17
 精彩回答 2  元偷偷看……
密耳
6楼-- · 2019-10-17 12:42
dengxingling8 发表于 2016-12-2 16:28
丝毫没有问题,片子SRAM大小8K,测试代码有问题,不过和讨论的问题无关了

你改的堆栈大小还是你的test[1000*1024]大小?你这样定义个局部变量。。???没问题?????????

一周热门 更多>