当我在一个函数中声明一个较大的局部数组变量时,例如unsigned char tempdata[1460]时,程序可以编译通过,但会产生预想不到的结果:当声明unsigned char tempdata[1024]时,程序运行就会挂掉,声明unsigned char tempdata[1460]时,全局变量会跟着出错,当初就因为一个全局变量出问题,让我找了很久,终于找到是这个貌似不相关的问题,后来把局部变量改成全局就OK了。查相关资料说是因为局部变量是存放在栈区的,而全局变量在全局区(静态区),如果栈区较小,会产生溢出,但这个栈区到底有多大,而STM32又最大能声明多大的局部变量呢? |