我用仿真器调试MSP430F5510,利用定时器和端口中断从低功耗模式中唤醒,工作模式是这样子的:
main()
{
……
while(1)
{
执行1;
……
LPM3;
}
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER1_A0_ISR(void)
{
……
LPM3_EXIT;
}
在仿真器挂着跑的时候,程序中没有断点,我点一下IAR的暂停,那么单片机再也不能恢复到main函数里面的while(1)循环里执行我的应用程序,同时编译器警告如下
Wed Oct 19, 2011 21:41:04: The stack pointer for stack 'Stack' (currently Memory:0x3404) is outside the stack range (Memory:0x3360 to Memory:0x3400)
意思是我栈的内容超出MSP430F5510的RAM范围,我查了很长时间,我的子程序基本没有多层嵌套,且子程序里面变量很少,我把栈由原来的160设成现在320,也没有解决上面问题,请高手指导一下,这是为什么?