CC2640退出睡眠
Hi,TI员工:
请问一个关于CC2640开启POWER_SAVING后如何自由控制退出、进入睡眠的问题。
CC2640有没有想CC2541的osal_pwrmgr_task_state(task_id, PWRMGR_HOLD)机制可以自由控制进出睡眠?若有,请问使用哪个函数?若没有,请问有没有其他方法自由控制进入、退出省电模式?谢谢!
CC2640电源管理完全是交给TI-RTOS的, 是否进入低功耗,不仅和你自己的应用有关,和驱动也有很大的关系。官方提供的驱动也是基于TI-RTOS,已经把进出低功耗考虑进来了(不是所有,大部分都有)。
所以,如果,你没有使用任何外设,默认程序,则开关低功耗简单使用
Power_setConstraint(PowerCC26XX_SB_DISALLOW);//不进入低功耗
Power_releaseConstraint(PowerCC26XX_SB_DISALLOW);//释放
下面的代码摘自串口驱动,供参考。
/*
* Ensure safe setting of the standby disallow constraint.
*/
static inline void threadSafeStdbyDisSet(volatile bool *pConstraint) {
unsigned int key;
/* Disable interrupts */
key = Hwi_disable();
/* Only act if the current constraint is not previously set */
if (!*pConstraint) {
/* Set constraints to guarantee operation */
Power_setConstraint(PowerCC26XX_SB_DISALLOW);
*pConstraint = true;
}
/* Re-enable interrupts */
Hwi_restore(key);
}
/*
* Ensure safe releasing of the standby disallow constraint.
*/
static inline void threadSafeStdbyDisRelease(volatile bool *pConstraint) {
unsigned int key;
/* Disable interrupts */
key = Hwi_disable();
if (*pConstraint) {
/* release constraint since operation is done */
Power_releaseConstraint(PowerCC26XX_SB_DISALLOW);
*pConstraint = false;
}
/* Re-enable interrupts */
Hwi_restore(key);
}
/*
多谢啦!