记录一次程序异常 添加一个函数之后整个程序逻辑运行错误 Stm32F407Vet6 keil5 启动文件

毕设程序,修改了硬件之后 重新编译 发生了未知的错误 :有两个屏幕的模块  墨水屏和 OLED ;

当墨水屏的初始化程序加到总代码中时  OLED 就无法显示, 当去除墨水屏部分的代码时程序就可以运行了。

原因是  栈  开的太小了 而我的程序中的墨水屏需要非常大的内存

发现是堆栈的原因 是 我的2 处程序运行 不正常  。注释掉1  的初始化函数之后就正常了。  这个肯定不是 顺序执行程序导致的问题。   所以 第一考虑的就是 编译器本身的问题 。

去看启动文件   果然  栈内存分配的太少了    我的 墨水屏 数据的 数组就占据了15 K

重新分配栈之后解决问题。

堆和 栈的空间是  0xf000 + 0x4000 = 0x13000  = 77824

挺有意思的一个问题  ,卡了两个多小时。。。

猜你喜欢

转载自blog.csdn.net/weixin_41534481/article/details/104686520