我现在程序很容易跑飞,跑飞后就进入到那些没用的中断中,比如interrupt void ILLEGAL_ISR(void)或interrupt void PDPINTB_ISR(void) // EV-B。引起跑飞的原因很奇怪,比如变量定义,当定义为unsigned int 型可以正常云装,定义为unsigned long型就跑飞,或者定义成有符号型也跑飞。另外有些时候遇到这句GpioDataRegs.GPDDAT.bit.GPIOD6=0;也跑飞,去掉这句话就可以正常工作,是什么原因呢?
跑飞有两种原因:
1、是硬件,时钟电压不稳定
2、是软件,可能性很多,比如堆栈溢出
先要确认一下跑飞原因
楼主可以用Mixed mode看下汇编代码或单步运行的方法看看是在什么地方跑飞的,找下原因
对也看下在哪跑飞的。不过偶也遇到过跑飞的,用matlab自动生成的程序,就会跑飞。后来查出来是软件不兼容的问题
回复 7楼 安_然 的帖子
哈,安然对这个跑飞耿耿于怀,可把你磨死了。
跑飞一般分为2种原因--硬件原因和软件原因。
硬件原因上的时钟电压不稳定,比如有的时候会进入limp mode
软件上的,说到底就是CPU解码程序时候碰到0000和FFFF然后进入illegal interrupt;导致的原因一般是程序存在非法地址访问;STACK存放溢出
把设计图和测试代码发上来,2812很稳定的,要么是硬件要么是软件问题,先排查硬件
外部地址线 数据线看看有没有问题,比如两根地址线有点搭牢.我前几天搞一块板子也老是跑飞,启动没多久就跑飞,而且是无规律的跑飞,后来拆了个CPLD(地址线焊时有点问题)就好了.
还有XINTF InitFlash配置不合适,也有可能