从PM3模式唤醒后,广播打不开?
我从PM3模式唤醒后,在中断里打开了广播,但是手机还是搜不到蓝牙,请问这是为什么啊?怎么做,才可以唤醒后,打开广播。谢谢了
yafan,
你是怎么在中断里打开广播的呢?秀一下代码。
#pragma vector = P2INT_VECTOR
__interrupt void P2_ISR(void)
{
P2_0_INTERRUPT_DISABLE();
P2_INTERRUPT_DISABLE();
ALL_INTERRUPT_DISABLE();
if(P2IFG & P2_0_BIT) //按键中断
{
P2_0_CLEAR_FLAG();
if(PICTL & 0x08)//如果是上升沿,则设为下降沿,
{
P2_FALLING_INTERRUPT();
PowerMode(3);
}
else
{
P2_RISING_INTERRUPT();//此时应该打开广播
uint8 new_adv_enabled_status = TRUE;
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &new_adv_enabled_status ); //这是打开广播的代码,我仿真过,可以执行到这一句,但是广播没有打开。
}
}
P2_0_INTERRUPT_ENABLE();
P2_INTERRUPT_ENABLE();
ALL_INTERRUPT_ENABLE(); //开中断
}
为什么不在应用层做呢,跑到底层做做什么应用
我试过在应用层做,但是还是不可以啊
yafan,
你的“ PowerMode(3)” 是怎么回事?
如果是你在手动控制power mode的话,希望你停止这样使用。
power mode是由osal自动控制的,只要有外部中断,就会从PM3 醒过来,没有任何外部动作,系统会自动进入PM3,不需要你手动去操作,如果你手动操作的话,会引起混乱。
PM3是我手动控制的。系统不是只自动进入PM2吗?如果能自动进入PM3,请问OSAL是如何操作的,我现在的项目,在P2.0脚高电平时,完全睡眠,如果不是自己手动操作,那该怎么做啊?
yafan,
PM2和PM3都是系统自动控制进入的。
有兴趣你可以看一下 halSleep() 哦,聪明的你肯定能看到系统是怎么去调度PM2和PM3的。
呵呵。我觉得我挺笨的,要不然怎么会这个问题都解决不了。哈哈。谢谢你。我现在就去研究一下代码。
