数组过大程序不能正常运行

2019-07-21 00:22发布

本帖最后由 stm32我爱你 于 2016-1-8 15:19 编辑

u16 color_buf[1920];
u8 color_buf1[3840];
如上图所示,这两个数组是在子函数里定义的局部变量,程序开始能正常运行;如果把第一个数组的大小从1920改为2048,则程序会卡死在这个函数里面,谁知道这是什么原因吗?如果一定要定义一个2048甚至是4096大小的数组,应该怎么解决这个问题呢?谢谢各位了。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
ofourme
1楼-- · 2019-07-22 10:47
jermy_z 发表于 2016-1-8 16:10
嗯,呵呵

哥们,淡定…
stm32我爱你
2楼-- · 2019-07-22 10:48
小温 发表于 2016-1-8 16:22
你为什么要在函数内部开这么大的buff?有外扩SRAM吗?没有的话,无论在全局还是局部,SRAM较少的MCU都不建 ...

需要读取外部SD卡的图片数据存储到外扩SRAM里,目前不知道有没有更好的办法,所以就弄一个大的数组来暂时存放这些数据,
不知道有没有更好的方法   还请不吝赐教啊
ricefat
3楼-- · 2019-07-22 15:47
 精彩回答 2  元偷偷看……
stm32我爱你
4楼-- · 2019-07-22 21:11
 精彩回答 2  元偷偷看……
xkwy
5楼-- · 2019-07-23 00:53
你的keil工程肯定有startup***.s的汇编启动文件吧?

打开它,找到Stack_Size那一行,默认好像是1k,把值该大些就行了
另外,函数内定义大数组实在不是好习惯,如果非要用,最好放函数外或定义成静态的
QQ截图20160108171850.png
stm32我爱你
6楼-- · 2019-07-23 01:05
xkwy 发表于 2016-1-8 17:19
你的keil工程肯定有startup***.s的汇编启动文件吧?

打开它,找到Stack_Size那一行,默认好像是1k,把值 ...

默认是1K的,Stack_Size和Heap_Size是不是共用0x0200 0000开始的64M地址呢?是不是最大可设置到64M啊,看了Cortex_M3权威指南,还是没搞明白
麻烦再指点下,最好是能说详细明白点,谢谢

一周热门 更多>