This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

从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的。

  • 呵呵。我觉得我挺笨的,要不然怎么会这个问题都解决不了。哈哈。谢谢你。我现在就去研究一下代码。