风华正茂0314 发表于 2014-3-6 10:13:02

求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!

各位高手,我在用STM32做项目的时候,用MDK,我发现我的程序老是出一些莫名奇妙的问题,比如,编译好正确运行的程序,再加一个函数或将一些变量定义多些,再运行就会出问题!请问这是什么原因啊?网上好像说跟堆栈大小有关??求指教!

这是程序能按预期功能运行时的编译结果!
 

这是添加一些代码后程序编译的结果,程序运行就乱了!
 
可以确定的是添加的代码不会影响程序的逻辑功能。

fengye5340 发表于 2014-3-6 10:18:08

RE:求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!

你的程序代码不大,可能是你采用默认设置的堆栈空间太小了,运行出错了,修改一下堆栈吧,最后用仿真器看看你的程序跑到什么地方了,出错在什么位置。
下面是堆栈修改的地方:在startup_XXX.s文件里面呢。

 
 

风华正茂0314 发表于 2014-3-6 10:37:42

回复:求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!

我设置了,跟上面的一样。。。木有仿真器。。。。:L:L

fengye5340 发表于 2014-3-6 11:52:12

回复:求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!

回复第 3 楼 于2014-03-06 10:37:42发表:
我设置了,跟上面的一样。。。木有仿真器。。。。:L:L 

上面只是位置实例,这个堆栈大小对应一般的小代码运行没问题,建议你修改成 0x1000   0x400  试一下
 

青檬 发表于 2014-3-6 12:37:10

RE:求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!

添加的东西在哪里定义的

风华正茂0314 发表于 2014-3-6 14:25:10

回复:求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!

确实是堆栈的问题。。。

aaa999kk 发表于 2014-3-7 14:06:11

RE:求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!

堆栈的代码有点问题啊,修改下, 看看顺序和大小有没有错

aaa1350 发表于 2014-3-7 23:51:27

RE:求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!

堆栈的代码有点乱还是循环没做好吗?

wkuang 发表于 2014-3-9 19:52:42

RE:求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!

看着现象像是堆栈出问题了, STM32的堆栈空间有限,看看有没有这么几种问题
1、函数中有很大的局部变量;
2、函数入参是结构体,结构体占的空间很大。
这两种情况都可能导致堆栈溢出,代码跑飞
页: [1]
查看完整版本: 求大神指教!!!!!!!!!!!!!!!!!!!!!!!!!!!!