TI中文支持网
TI专业的中文技术问题搜集分享网站

OSAL问题咨询

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!

赞(0)
未经允许不得转载:TI中文支持网 » OSAL问题咨询
分享到: 更多 (0)