stm32栈空间溢出处理方法

  在写stm32程序时会用到一些局部变量,函数中的局部变量是存在栈空间当中,在stm32的启动文件当中可以设置栈空间大小,在如果函数当中定义的的局部变量超过栈空间大小编译时不会报错,但运行时极有可能出现错误,甚至会导致程序卡死,那么如何修改栈空间大小呢?

方法一:修改栈空间大小

1、找到启动文件hd.s(例如:是stm32f103则是startup_stm32f10x_hd.s)

2、找到启动文件当中的栈空间大小定义

1  Stack_Size      EQU     0x00000400  //系统默认栈空间大小为1K

3、修改栈空间大小

1  Stack_Size      EQU     0x00001000  //我们么修改为4K

方法二:将局部变量改为全局变量

另外:

栈,用于存放局部变量,局部数组等 堆,用于保存malloc这些自定义的内存变量; 全局静态区,用于保存全局变量和静态变量; 字符常量区,用于保存字符串; 代码区,用于保存程序的二进制代码;

 

posted @ 2022-02-11 14:20  yangrourou  阅读(938)  评论(0编辑  收藏  举报