打印

STM32局部变量问题

[复制链接]
2551|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2011-1-18 17:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当我在一个函数中声明一个较大的局部数组变量时,例如unsigned char tempdata[1460]时,程序可以编译通过,但会产生预想不到的结果:当声明unsigned char tempdata[1024]时,程序运行就会挂掉,声明unsigned char tempdata[1460]时,全局变量会跟着出错,当初就因为一个全局变量出问题,让我找了很久,终于找到是这个貌似不相关的问题,后来把局部变量改成全局就OK了。查相关资料说是因为局部变量是存放在栈区的,而全局变量在全局区(静态区),如果栈区较小,会产生溢出,但这个栈区到底有多大,而STM32又最大能声明多大的局部变量呢?
沙发
ST_ARM| | 2011-1-18 21:32 | 只看该作者
STM32能声明多大的局部变量是由堆栈的大小决定的,如果你要定义长度大的局部变量,你可以增大你的栈的空间。

IAR中你可以在stm32f10x_flash.icf修改:
define symbol __ICFEDIT_size_cstack__   = 0x400;   <------ 改此值

Keil中我不知道,没用过Keil。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝