回答

收藏

STM32局部数组太大问题

#竞赛 #竞赛 4647 人阅读 | 0 人回复 | 2013-10-13

c语言里面,局部变量存在栈里面,单片机里面栈的大小相当有限,所以定义太大的数组,操作的时候就可能导致超出栈的大小。。改变其他内存的数据,改变的地方是未知的,如果改变的是系统的核心的结构,就导致系统崩溃。。而全局变量在全局区(静态区)


修改startup_stm32f10x_XX.s文件的 Stack_Size EQU 0x00000XXX 其默认值为 0x00000400 1024字节,改变栈的大小,但是栈不能开的太大,除了变量需要,调用的函数参数也需要压栈


总结:对于较大的数组  1.改变栈的大小(不推荐);2.定义成static的(推荐);3.定义为全局变量(推荐)
我的淘宝店:http://shop106572055.taobao.com/
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条