hi,各位工程师好,
我最近再遇到从机SimpleBLEPeripheral进不了低功耗的问题,就先拿TI的示例代码来调试。板子用的是TI原厂的开发板,工程设置中开启了Power_saving,又在工程中不启动 SBP_PERIODIC_EVT事件,然后发现在以下函数
void osal_pwrmgr_powerconserve( void )
{
uint32 next;
halIntState_t intState;
// Should we even look into power conservation
if ( pwrmgr_attribute.pwrmgr_device != PWRMGR_ALWAYS_ON )
{
// Are all tasks in agreement to conserve
if ( pwrmgr_attribute.pwrmgr_task_state == 0 )
{
// Hold off interrupts.
HAL_ENTER_CRITICAL_SECTION( intState );
// Get next time-out
next = osal_next_timeout();
// Re-enable interrupts.
HAL_EXIT_CRITICAL_SECTION( intState );
// Put the processor into sleep mode
OSAL_SET_CPU_INTO_SLEEP( next );
}
}
}
pwrmgr_attribute.pwrmgr_device 一直等于 PWRMGR_ALWAYS_ON,导致进入不了低功耗。我猜测有东西没关掉一直在跑,特向各位工程师求助
Yang Yang29:
现在说一下进展,我将osal_start_timerEx( Hal_TaskID, HAL_KEY_EVENT, 100);注释掉之后,能进到if ( pwrmgr_attribute.pwrmgr_task_state == 0 )这个判断语句里面去,打断点调试来看,一直频繁进去,不断地走到这个断点,好像有什么一直在唤醒,有没有人遇到过?
Yang Yang29:
回复 Yang Yang29:
TI的技术人员呢,都好几天过去了,一个回答的也没有,这是你们自己的例程
Viki Shi:
回复 Yang Yang29:
1、例程有没有修改过?
2、是否有其他开发板换块测试下?
Yang Yang29:
回复 Viki Shi:
1.唯一的修改就是注释掉了osal_start_timerEx( Hal_TaskID, HAL_KEY_EVENT, 100) 和osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD )
2.没有换其他开发板,用的还是从TI买的板子
3.KeyFob是能进入低功耗PM3的,simpleBLEPeripheral进不去