记录一次程序异常 添加一个函数之后整个程序逻辑运行错误 Stm32F407Vet6 keil5 启动文件
毕设程序,修改了硬件之后 重新编译 发生了未知的错误 :有两个屏幕的模块 墨水屏和 OLED ;
当墨水屏的初始化程序加到总代码中时 OLED 就无法显示, 当去除墨水屏部分的代码时程序就可以运行了。
原因是 栈 开的太小了 而我的程序中的墨水屏需要非常大的内存。
发现是堆栈的原因 是 我的2 处程序运行 不正常 。注释掉1 的初始化函数之后就正常了。 这个肯定不是 顺序执行程序导致的问题。 所以 第一考虑的就是 编译器本身的问题 。
去看启动文件 果然 栈内存分配的太少了 我的 墨水屏 数据的 数组就占据了15 K
重新分配栈之后解决问题。
堆和 栈的空间是 0xf000 + 0x4000 = 0x13000 = 77824
挺有意思的一个问题 ,卡了两个多小时。。。