当前位置: 代码迷 >> 单片机 >> Keil ARM LPC2294 wihle主循环中存在调用函数时(如 DELAY函数),进入中断后(如CAN中断),就运行异常,
  详细解决方案

Keil ARM LPC2294 wihle主循环中存在调用函数时(如 DELAY函数),进入中断后(如CAN中断),就运行异常,

热度:386   发布时间:2016-04-28 14:42:05.0
Keil ARM LPC2294 wihle主循环中存在调用函数时(如 DELAY函数),进入中断后(如CAN中断),就运行错误,求助。
菜鸟求助。
Keil ARM LPC2294 wihle主循环中存在调用函数时(如 DELAY函数),进入几次(如,2次)中断后(如CAN中断),就运行错误,程序直接跑飞,停在Startup.s文件中的PAbt_Addr       DCD     PAbt_Handler,死循环。
若是将while主循环中的调用函数全部清除,空循环,则程序能够响应中断,且可任意多次响应,程序正常运行。

网络上查看消息说是堆栈问题,目前,Starup.s堆栈空间已经修改到足够大,依然存在此问题,求大侠指点。
------解决思路----------------------
引用:
追问:
仅用最简单的程序,加上CAN驱动和中断,默认栈空间0x400,按说应该已经够大了。疑惑

盲目加大不是解决办法,要找到是哪里溢出, 中断里面设断点, 把stack窗口打开,每次触发断点就看下stack是不是正常(突然增大很多或者突然变成了一个不合适的数字),然后继续单步挨个找看是执行完哪一步出现,有时堆栈是慢慢溢出的,所以继续的话还能重复观察到
 看你说的最有可能就是你的延时那里出问题, 把你延时代码贴出来看看
------解决思路----------------------
lz似乎应该检查中断函数里都干了些什么,是否修改了sp?
  相关解决方案