关于CH579睡眠唤醒的问题
if(events & HAL_SLEEP_EVENT)
{
    PRINT("flag_sleep:%d\n",flag_sleep);
    if(flag_sleep)
    {
        GPIOB_SetBits(GPIO_Pin_10);//关闭指示灯
        flag_sleep = 0;
        status = 0;//将状态设置为休眠中
        PRINT("sleep\n");
        DelayMs(1);
        LowPower_Sleep(RB_PWR_RAM14K|RB_PWR_RAM2K);//休眠 阻塞在此处
        SetSysClock( CLK_SOURCE_HSI_32MHz );
        HSECFG_Current( HSE_RCur_100 );     // 降为额定电流(低功耗函数中提升了HSE偏置电流)
    }
    tmos_start_task( halTaskID , HAL_SLEEP_EVENT ,MS1_TO_SYSTEM_TIME(50));
    return events ^ HAL_SLEEP_EVENT;		
}

大家好!我设置的是仅GPIO中断唤醒睡眠,但我发现唤醒后(已将flag_sleep置为0),上述事件没有循环执行,请问这是什么原因?

蓝牙工程的话开启休眠通过一下的方式,你自己控制休眠可能会清掉任务状态,导致任务不运行。
image.png


我的目的是通过自己控制休眠来实现一个开关机的状态变化。那请问通过什么方式实现开关机更合理呢?


更新:

我将tmos_start_task( halTaskID , HAL_SLEEP_EVENT ,MS1_TO_SYSTEM_TIME(50));

修改为:tmos_set_event( halTaskID , HAL_SLEEP_EVENT );

发现可以正常启动了,但是启动之后手机搜索不到蓝牙信号了,请问这是怎么回事呢?该如何解决?


启用休眠,579的32K RAM只有后16K保持,自己控制睡眠可以。
但是RAM只能用后16K,你原来睡眠醒来以后任务不跑,就是睡眠后前16K  RAM 掉电了,数据都没了,所以跑不了。

你只要用后16K RAM,想睡就自己调用睡眠就行,不过自己管理的睡眠,会导致连接断开。


您好,我发现从sleep模式中唤醒,手机(主机)得过1~2分钟才能重新搜索到CH579(从机)的蓝牙信号,请问为什么需要这么长的时间?


只有登录才能回复,可以选择微信账号登录