582F低功耗蓝牙RF问题

__HIGH_CODE

void Main_Circulation()

{

    while(1)

    {



        if(Times > 2)

        {

            LClk32K_Select(Clk32K_LSE);

            PFIC_DisableIRQ( TMR0_IRQn );

            RTC_TRIGFunCfg(32768*1);    //32768为1s  定时1s唤醒

            PFIC_EnableIRQ(RTC_IRQn); //使能中断


            GPIOB_ModeCfg(GPIO_Pin_15, GPIO_ModeIN_PU);

            GPIOB_ITModeCfg(GPIO_Pin_15, GPIO_ITMode_FallEdge); // 下降沿唤醒

            PFIC_EnableIRQ(GPIO_B_IRQn);

            PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_GPIO_WAKE|RB_SLP_RTC_WAKE, Long_Delay);


            RF_Shut();

            // 注意当主频为80M时,Sleep睡眠唤醒中断不可调用flash内代码。

            LowPower_Sleep(RB_PWR_RAM30K | RB_PWR_RAM2K); //只保留30+2K SRAM 供电

            HSECFG_Current(HSE_RCur_100);                 // 降为额定电流(低功耗函数中提升了HSE偏置电流)

            Times = 0;

            if(RX_LEN)memset((uint8_t*)RX_BUF,0,sizeof(RX_BUF));


            PFIC_EnableIRQ( TMR0_IRQn );

//                        RF_RoleInit();

//                        Set_Frequency();

        }

//        TMOS_SystemProcess();

    }

}




芯片睡眠1s,然后运行 3ms,但是开启 RF_RoleInit(); Set_Frequency();TMOS_SystemProcess();,这三个函数电流就会变得很大,而且初始化时间有点久,导致电流表会打表,现在我需要怎么处理这几个函数,









ch5xx 的无论是蓝牙和RF_PHY的例程, 

都强烈建议用户,使用tmos的自动管理低功耗  只需要通过使能宏HAL_SLEEP=TRUE

用户的定时时间, 通过tmos的定时接口去实现即可, tmos的定时接口,本身是支持低功耗的. 


此外, 有时候我们想持续运行,而不进入低功耗, 只需要在tmos的sleep回掉函数中, 加入标志位, 根据标志位返回,即可.

image.png


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