stm32栈空间溢出处理方法
在写stm32程序时会用到一些局部变量,函数中的局部变量是存在栈空间当中,在stm32的启动文件当中可以设置栈空间大小,在如果函数当中定义的的局部变量超过栈空间大小编译时不会报错,但运行时极有可能出现错误,甚至会导致程序卡死,那么如何修改栈空间大小呢?
方法一:修改栈空间大小
1、找到启动文件hd.s(例如:是stm32f103则是startup_stm32f10x_hd.s)
2、找到启动文件当中的栈空间大小定义
1 Stack_Size EQU 0x00000400 //系统默认栈空间大小为1K
1 Stack_Size EQU 0x00001000 //我们么修改为4K
方法二:将局部变量改为全局变量
另外:
栈,用于存放局部变量,局部数组等 堆,用于保存malloc这些自定义的内存变量; 全局静态区,用于保存全局变量和静态变量; 字符常量区,用于保存字符串; 代码区,用于保存程序的二进制代码;