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

关于CC2541POWER_SAVING的睡眠定时器事件

作为新手,我查找睡眠定时事件的过程是这样的

与查找外围事件一样,我也是从初始化部分开始查找,首先是MAIN中找到

/* Initialize the operating system */
osal_init_system();

再进去找到任务初始化

// Initialize the system tasks.
osalInitTasks();

再进,找到硬件抽象层的初始化

/* Hal Task */
Hal_Init( taskID++ );

再进,发现里面没有设置要执行的事件,

再在下面

uint16 Hal_ProcessEvent( uint8 task_id, uint16 events )

事件处理中找到事件

if ( events & HAL_SLEEP_TIMER_EVENT )

{

halRestoreSleepLevel();

}

其中halRestoreSleepLevel();即为定时器的睡眠时间,要用时在Hal_Init( taskID++ );中

使用osal_set_event( Hal_TaskID, HAL_SLEEP_TIMER_EVENT);来设置睡眠定时器事件。

不知道我的想法是否正确,烦请大大们指正!!!

cedar_xuesong:

你不需要手工设置事件标志,系统hal会自动处理的。你可以在iar工程配置中找到POWER_SAVING宏,使能这个宏就启用了省点模式。另,在ble—stack手册中有电源管理的详细说明,仔细看一下

yu wang12:

回复 cedar_xuesong:

我的意思是设置当系统进入PM2时的睡眠时间,比如说我想让系统运行一段时间后睡眠一会再运行,你说的自动处理能说明系统具体怎么处理的吗,感觉没有睡觉时间。

cedar_xuesong:

回复 yu wang12:

只有系统所有应用都同意进入休眠模式,协议栈才会真正进入休眠。你说感觉没进入休眠,估计是某个任务hold住mcu了,仔细检查一下检查。至于 休眠–>唤醒——>休眠 ,你可以在休眠前设置一个定时事件,然后进入休眠模式,等时间到了,他会自动唤醒mcu的

yu wang12:

回复 cedar_xuesong:

我就是在找这个定时事件、时间在哪儿设置,是不是我上面说的地方设置的,还是只要是定时,哪儿都行,

还有就是开启POWER_SAVING后,在hal_sleep.c中找到,

HalLedEnterSleep();

意思是关闭所有LED后进入低功耗模式吧,也就是说进入和退出低功耗模式是以关闭和打开LED为标志的,但是我设置了定时事件后,LED灯亮灭的间隔时间依然不变,就是不断地亮灭,是不是就是说在不断地进入和退出低功耗模式呢。

实在不知道这个低功耗怎么用的,烦请指正。。。

zhihui zeng:

回复 yu wang12:

您好,我想问一下,PM2模式被唤醒后进入什么地方执行程序,比如我想1分钟唤醒一下,唤醒后发送一条数据出去,这个唤醒后到什么地方发送这个数据,发送完成后继续休眠   我使用的是CC2530 协议栈使用的是ZSTACK CC2530 2.5.1A

赞(0)
未经允许不得转载:TI中文支持网 » 关于CC2541POWER_SAVING的睡眠定时器事件
分享到: 更多 (0)