智能车制作
标题:
关于Illegal BP的问题,大家被困扰过吗?讨论~
[打印本页]
作者:
librae8226
时间:
2010-5-18 18:01
标题:
关于Illegal BP的问题,大家被困扰过吗?讨论~
我是在好几个月前第一次遇到这个问题的,一直没有解决,当时的情况是在main里调用别的.c文件里的一个函数,debug在RUNNING一会儿后就自己复位了,说明是Illegal BP,再点绿箭头——>RUNNING,1秒钟以后再次因Illegal BP中断,此后我把函数的内容直接复制出来,粘贴在main里(相当于替换原来的函数调用),这样就不在Illegal BP了,这样我们的main里背着这一大堆东西跑了好几个月,后来在main.c里直接声明并定义了这个函数,调用,运行,OK。一直不解这是为什么,因为同样在别的.c里定义的函数在main里调用都没有问题,就这一个有问题。
可是最近问题再一次出现,以前一直都没问题的ImageProcess()函数,在最近出现了问题,同样Illegal BP。注释ImageProcess(),不再Illegal BP……
现在唯一的不同就是增加了一些代码,下载进去时显示大约4900Bytes,以前没问题时也3000+Bytes。是因为变量定义或者访问越栈造成Illegal BP吗?此前出现过一次因为定义的数组过大而提示空间不够的情况,之后稍微改小了一些就可以继续使用了。我是用的没有分页的存储,是这个的问题吗?大家都是怎么样的情况啊?给点建议吧~
作者:
王怀玉
时间:
2010-5-18 18:12
回复
1#
librae8226
我感觉是你应该在那个程序上定义一下他的存储位置
有可能是代码的指针有问题
作者:
librae8226
时间:
2010-5-18 18:23
不应该呀,和别的函数一样的调用方法,它的定义和声明位置和格式也和别的一样,刚才上网搜了一下,是不是堆栈溢出啊?如果是的话怎么解决啊?为什么这样?
作者:
librae8226
时间:
2010-5-19 13:57
解决了,是堆栈溢出
作者:
cnpcshangbo
时间:
2010-5-24 19:47
回复
4#
librae8226
请问:这个堆栈溢出是怎么解决的?
作者:
librae8226
时间:
2010-6-13 13:28
回复
5#
cnpcshangbo
函数定义里不要定义太多的临时变量(如很多数据的数组),这样的话函数调用时需要把它们都压在堆栈,XS128堆栈容量小,自然就超了。
建议换用外部变量存放。
作者:
qnbs1
时间:
2010-6-18 08:11
可是超了怎么解决呀
作者:
librae8226
时间:
2010-6-18 08:59
回复
7#
qnbs1
局部变量改全局变量啊
作者:
yanglong890124
时间:
2010-11-26 16:24
谢谢,我也遇到过同样的问题
作者:
dwjcn717
时间:
2012-4-17 16:02
太感谢lz了,我也遇到了同样的问题~~看了之后已经找到了解决办法~~
作者:
海波
时间:
2012-8-16 23:12
我也遇到了这样的问题,还没解决,我定义的基本都是全局变量啊??可是把主函数里的EnableInterrupts;注释掉又就好了????还是不解,求解释、、、
作者:
fxk416532131
时间:
2012-12-15 17:04
困扰我好久了 膜拜楼主
作者:
与狼共舞
时间:
2013-5-13 12:11
librae8226 发表于 2010-5-19 13:57
解决了,是堆栈溢出
请问是怎么解决的?可以分享一下吗?
作者:
飞卡搬砖小工
时间:
2013-5-13 14:50
感谢
作者:
ywang_cn
时间:
2014-3-26 14:45
楼主我遇到你和帖子一样的问题了,请问你是怎么解决的
作者:
lixianghua0428
时间:
2014-8-25 10:33
thx
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2