微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > PM3模式下胡休眠如何唤醒

PM3模式下胡休眠如何唤醒

时间:10-02 整理:3721RD 点击:

我希望通过按键中断来唤醒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 )里面,但是也还是没什么作用。是不是放错位置了?

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

关于唤醒,我觉得

http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/p/62376/161302.aspx#161302

这里将的比较明白了。

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

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

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

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

  }

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

 

 

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

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

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top