OpenEdv-开源电子网

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

在STM32定义数组时,定义的长度限制怎么把握?如局域变量太多堆栈溢出导致程序跑死

[复制链接]

18

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2013-7-31
在线时间
1 小时
发表于 2014-5-20 21:04:58 | 显示全部楼层 |阅读模式
5金钱
本人曾经有过编程时在,主函数中定义了很多数组,(长度大概40左右的6.7个数组这样)在程序运行时会发生堆栈溢出,程序跑死的情况。最近我诱发想这样的情况
1.我在一个子函数定义了一个局域变量数字:u32 value_buf[100];(具体用作什么就不说了)
        当我的程序中没有中断函数TIM3_Init(5000,71);时,程序正常运行;但是一但加入TIM3_Init(5000,71);,程序立刻跑死;
硬件仿真:


2 我将数组定义在全局变量,其他程序不变
硬件仿真:


将数组改为u32 value_buf[50];的全局变量,程序正常。

我们在编写程序时,应该如何把我这个数字定义的尺度呢?

最佳答案

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

把数组定义到函数外面,作为全局变量...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-5-20 21:04:59 | 显示全部楼层
把数组定义到函数外面,作为全局变量...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

28

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2015-3-23
在线时间
54 小时
发表于 2016-3-2 15:21:02 | 显示全部楼层
定义在静态存储区也是可以的。
回复

使用道具 举报

0

主题

63

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3867
金钱
3867
注册时间
2015-8-26
在线时间
285 小时
发表于 2016-3-2 17:53:44 | 显示全部楼层
路过看看
回复

使用道具 举报

4

主题

13

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-2-29
在线时间
8 小时
发表于 2016-10-13 09:28:58 | 显示全部楼层
路过,同疑问
回复

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2016-10-13 09:31:17 | 显示全部楼层
用malloc吧,不用想太多了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 18:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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