PM3休眠的唤醒问题
系统进入PM3模式的休眠后,通过Disassembly中发现指针进入到了FFFFFF,然后在Debug log窗口中出现了
Mon Aug 18, 2014 17:31:21: The stack pointer for stack 'XdataStack' (currently XData:0xFFFF) is outside the stack range (XData:0x0001 to XData:0x0281)
这样的警告。
我的休眠还输是自己写的:
void DeepSleepMode(void)
{
uint8 i;
SLEEPCMD|=0X03;
for(i=0;i<4;i++);
PCON=0X01;
}
然后在定时0.5s扫描一下P1_6引脚是否置高,若是则进入PM3,程序为:
if ( events & SBP_PERIODIC_EVT )
{
if ( SBP_PERIODIC_EVT_PERIOD )// Restart timer
{
osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD );
}
if(DEFAULT_Sleep_Check)
{
if(P1_6 == 1)
{
DeepSleepMode();
}
}
return (events ^ SBP_PERIODIC_EVT);
}
最后在通过按键中断来唤醒PM3,按键中放置了:
PCON = 0X00;
SLEEPCMD |= 0;
请问各位大神:问题究竟出在哪儿呢?为什么换不醒PM3呢?求指导
PM3只能由外部中断或者Reset唤醒
按键的中断使用的不是外部中断吗?