在c语言里面,局部变量存在栈里面,单片机里面栈的大小相当有限,所以定义太大的数组,操作的时候就可能导致超出栈的大小。。改变其他内存的数据,改变的地方是未知的,如果改变的是系统的核心的结构,就导致系统崩溃。。而全局变量在全局区(静态区)
修改startup_stm32f10x_XX.s文件的 Stack_Size EQU 0x00000XXX 其默认值为 0x00000400 即1024字节,改变栈的大小,但是栈不能开的太大,除了变量需要,调用的函数参数也需要压栈
总结:对于较大的数组 1.改变栈的大小(不推荐);2.定义成static的(推荐);3.定义为全局变量(推荐)。
|