Загрузка данных


/*--------------------------------------------------------------------------*/
/* Set CPU sleep mode                                                       */
/*--------------------------------------------------------------------------*/
bool CPU_SleepModeSet(uint32_t cpuIdx, uint32_t sleepMode)
{
    bool rc = false;

    if ((cpuIdx < CPU_NUM_IDX) && (sleepMode <= CPU_NUM_SLEEP_MODES))
    {
        /* Set targeted sleep mode */
        uint32_t cmcModeCtrl = s_gpcCpuCtrlPtrs[cpuIdx]->CMC_MODE_CTRL;
        cmcModeCtrl &= (~GPC_CPU_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET_MASK);
        cmcModeCtrl |= GPC_CPU_CTRL_CMC_MODE_CTRL_CPU_MODE_TARGET(sleepMode);
        s_gpcCpuCtrlPtrs[cpuIdx]->CMC_MODE_CTRL = cmcModeCtrl;

        /* Configure sleep-hold interface */
        if ((s_cpuMgmtInfo[cpuIdx].cmcMisc &
            GPC_CPU_CTRL_CMC_MISC_SLEEP_HOLD_EN_MASK) != 0U)
        {
            /* Enable sleep-hold interface unless sleep mode is RUN */
            uint32_t cmcMisc = s_gpcCpuCtrlPtrs[cpuIdx]->CMC_MISC;
            if (sleepMode == CPU_SLEEP_MODE_RUN)
            {
                cmcMisc &= ~GPC_CPU_CTRL_CMC_MISC_SLEEP_HOLD_EN_MASK;
            }
            else
            {
                cmcMisc |= GPC_CPU_CTRL_CMC_MISC_SLEEP_HOLD_EN_MASK;
            }
            s_gpcCpuCtrlPtrs[cpuIdx]->CMC_MISC = cmcMisc;
        }

        rc = true;
    }

    return rc;
}