在寫stm32程序時會用到一些局部變量,函數中的局部變量是存在棧空間當中,在stm32的啟動文件當中可以設置棧空間大小,在如果函數當中定義的的局部變量超過棧空間大小編譯時不會報錯,但運行時極有可能出現錯誤,甚至會導致程序卡死,那么如何修改棧空間大小呢?
方法一:修改棧空間大小
1、找到啟動文件hd.s(例如:是stm32f103則是startup_stm32f10x_hd.s)
2、找到啟動文件當中的棧空間大小定義
1 Stack_Size EQU 0x00000400 //系統默認棧空間大小為1K
1 Stack_Size EQU 0x00001000 //我們么修改為4K
方法二:將局部變量改為全局變量
另外:
棧,用於存放局部變量,局部數組等 堆,用於保存malloc這些自定義的內存變量; 全局靜態區,用於保存全局變量和靜態變量; 字符常量區,用於保存字符串; 代碼區,用於保存程序的二進制代碼;
