Hi! TI的技术支持:
为了跟踪睡眠的问题,我在void osal_pwrmgr_powerconserve( void )中添加了点亮LED和关闭LED的代码。
if ( pwrmgr_attribute.pwrmgr_device != PWRMGR_ALWAYS_ON )//省电模式
{
HalLedSet(HAL_LED_2,HAL_LED_MODE_OFF);
…
}
else
{
HalLedSet(HAL_LED_2,HAL_LED_MODE_ON);//不省电模式
}
然后我在用户任务中调用void osal_pwrmgr_device(PWRMGR_ALWAYS_ON )。
按道理来说,系统电源会一直保持ALWAYS_ON,并且一直电量LED2.
但是,事实是,点亮一小段时间后就熄灭了。——(osal_pwrmgr_device()这个函数我只调用一次)。
也就是说,可能在其他不了解的地方,被熄灭了LED。
后来我屏蔽了const pTaskEventHandlerFn tasksArr[]中的任务及osalInitTasks();中对应的初始化任务。
发现是LL_ProcessEvent()任务造成的。我想了解下,为何这个任务会关闭我的LED呢?
我只要屏蔽这个任务,就正常了。。。
Yan:
shaokai,
用的啥工程?
有连接还是没连接?
shaokai Lin:
回复 Yan:
Yan
我用的是simpleBLEPeripheral工程。上电即如此,没有连接。。。
以下是我修改过的所有地方,其他不变:
1. uint16 SimpleBLEPeripheral_ProcessEvent( uint8 task_id, uint16 events )中
{
…
if ( events & SBP_START_DEVICE_EVT ) {
…
osal_pwrmgr_device(PWRMGR_ALWAYS_ON);
}
}
2. void osal_pwrmgr_powerconserve( void )中
{
if ( pwrmgr_attribute.pwrmgr_device != PWRMGR_ALWAYS_ON ) { HalLedSet(HAL_LED_2,HAL_LED_MODE_OFF);
…
}
else
{
HalLedSet(HAL_LED_2,HAL_LED_MODE_ON);
}
}
希望你能帮我验证下,这对我们分配IO口很重要!谢谢。
shaokai Lin:
回复 shaokai Lin:
又要沉了,不要沉啊,不要啊。。。
Yan:
回复 shaokai Lin:
shaokai,
根据你的要求, 在main()里面,把 osal_pwrmgr_device(PWRMGR_BATTERY); 改成 osal_pwrmgr_device(PWRMGR_ALWAYS_ON);
shaokai Lin:
回复 Yan:
Yan
你确定有效吗?我没试出效果哦!
而且我觉得也说不通啊,main()里的osal_pwrmgr_device()在前, uint16 SimpleBLEPeripheral_ProcessEvent( uint8 task_id, uint16 events )中
的 if ( events & SBP_START_DEVICE_EVT )在后。我在后面的处理事件里把它设为 osal_pwrmgr_device(PWRMGR_ALWAYS_ON);应该没啥不一样的。
shaokai Lin:
回复 Yan:
Thanks Yan.
昨天你的同事已经为我解答这个问题了,还是感谢你热心的解答。谢谢~
I will try again!