TI中文支持网
TI专业的中文技术问题搜集分享网站

PM3模式下胡休眠如何唤醒

我希望通过按键中断来唤醒PM3下的休眠模式,但是总是换不醒。在基础实验中有

#pragma vector = P0INT_VECTOR __interrupt void P0_ISR(void)

{ if(P0IFG>0) { P0IFG = 0; //清标志位
} P0IF = 0; PCON = 0X00; //正常工作模式
}

在协议战中该放到哪呢,我把PCON = 0X00;放在了HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )里面,但是也还是没什么作用。是不是放错位置了?

请问各位大神该怎么做才能唤醒呢?

Fred Wang:

中断触发后打开广播或者周期性事件就是切换到PM2,如果切换电源状态就是进入正常模式。

Viki Shi:

回复 admin admin1:

admsadm 提供的链接很好,已选为标准答案

Amos Chen:

回复 Fred Wang:

Thank you  Fred.但是我发现系统一旦进入PM3模式的休眠就在也无法唤醒了,在Disassembly窗口中发现指针跳到了FFFFFF,它不应该是停在进入休眠前的程序位置吗,怎么会跳到这里了呢?还有 就是该如何唤醒呢?我的休眠函数是复制8051的:

void DeepSleepMode(void){  uint8 i;  SLEEPCMD|=0X03;            for(i=0;i<4;i++);  PCON=0X01;          

  }

请问这是不是有什么问题啊?又该如何解决呢

 

 

Fred Wang:

回复 Amos Chen:

休眠不用代码呀,电源切换到电池模式,可以通过设置项目的宏参数,停止广播,停止一切task event,自动就进入PM3了,这个时候只有按键中断才能触发唤醒芯片工作,在中断时间里写工作模式切换的相应代码。

Amos Chen:

回复 Fred Wang:

你好,Fred. 抱歉现在才回复。请问您说的停止一切task event 包括底层的task event吗?还是只有自己定义的?

我只是在simpleBLEPheripheral文件中使用了自带的三个事件SBP_START_DEVICE_EVT、SBP_PERIODIC_EVT、SBP_ADV_IN_CONNECTION_EVT。但是我关掉这三个之后发现功耗竟然达到了160uA,在配置中我也关闭了UART,打开了POWER_SAVING.请问还有什么遗漏吗?

Fred Wang:

回复 Amos Chen:

修改这些要弄明白他们的用途,不能猜想。SBP_START_DEVICE_EVT 是设备启动事件,只会在启动后执行一次,不要去掉。SBP_PERIODIC_EVT是一个App的自定义的周期事件,可以根据自己的需要停止或删除。SBP_ADV_IN_CONNECTION_EVT这个没见过,不知道是啥,需要分析具体代码看功能。正常休眠功耗最多1ua

赞(0)
未经允许不得转载:TI中文支持网 » PM3模式下胡休眠如何唤醒
分享到: 更多 (0)