記錄一次程序異常 添加一個函數之後整個程序邏輯運行錯誤 Stm32F407Vet6 keil5 啓動文件

畢設程序,修改了硬件之後 重新編譯 發生了未知的錯誤 :有兩個屏幕的模塊  墨水屏和 OLED ;

當墨水屏的初始化程序加到總代碼中時  OLED 就無法顯示, 當去除墨水屏部分的代碼時程序就可以運行了。

 

原因是  棧  開的太小了 而我的程序中的墨水屏需要非常大的內存

 

發現是堆棧的原因 是 我的2 處程序運行 不正常  。註釋掉1  的初始化函數之後就正常了。  這個肯定不是 順序執行程序導致的問題。   所以 第一考慮的就是 編譯器本身的問題 。

去看啓動文件   果然  棧內存分配的太少了    我的 墨水屏 數據的 數組就佔據了15 K

重新分配棧之後解決問題。

堆和 棧的空間是  0xf000 + 0x4000 = 0x13000  = 77824

挺有意思的一個問題  ,卡了兩個多小時。。。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章