你(们)好
我的 μ сс1352上的低功耗模式有问题。 我想将1352置于待机模式、因此我使用以下结构:
Clock_scheduleNextTick (100、ticks);//设置转换时间
power_registerNotify (&PWR_NOTI、PowerCC26XX_AleK_STANDBY、(Power_NotifyFxn) PwrMgmt_ExitSlepNotification、NULL);
power_releaseConstraint (PowerCC26XX_disallow_standby);
PowerCC26XX_standbyPolicy();
在 PowerCC26XX_standbyPolicy()中;调试时:
节拍数= Clock_getTicksUntilInterrupt ();
/*将刻度转换为 usec */
时间=节拍* Clock_tickPeriod;
/*检查是否可以进入待机状态*/
IF (时间> Power_getTransitionLatency (PowerCC26XX_STANDBY、
power_total)){
/*安排唤醒事件*/
TICKs -= PowerCC26X2_WAKEDELAYSTANDBY / Clock_tickPeriod;
Clock_setTimeout (Clock_handle ((Clock_Struct*)&PowerCC26X2_module.clockObj)、tick);
Clock_start (Clock_handle ((Clock_Struct*)&PowerCC26X2_MODULE.clockObj));
这里我有第一个问题---- 为什么我通过 Clock_scheduleNextTick 设置的时间没有在这里传递 Clock_getTicksUntilInterrupt ();。
代码执行得更远
/*进入待机模式*/
POWER_SLEEP (PowerCC26XX_STANDBY);
此函数调用:
SysCtrlStandby (retainCache、
VIMS_ON_CPU_ON_MODE、
SYSCTRL_Preferred_RELEGE_MODE);
它基本上会传输到所需的模式,但是在返回 到 Power_sleep 时,它 会再次打开电源:
/* 4. 如果未将 VIMS 保持在待机状态、请立即重新启用保留*
if (retainCache == false){
/* 5.1如果之前处于高速缓存模式,请立即恢复该模式*/
if (modeVIMS = VIMS_MODE_ENABLED){
VIMSModeSet (VIMS_BASE、MODEVIMS);
}
/* 5.2重新启用保留*/
PRCMCacheRetentionEnable();
}
/* 6. 开始为电源域重新供电*/
PRCMPowerDomainOn (poweredDomains);
我有第二个问题----如何使 ss1352在正确的时间睡着?