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这些自定义的内存变量; 全局静态区,用于保存全局变量和静态变量; 字符常量区,用于保存字符串; 代码区,用于保存程序的二进制代码;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步