1.zigbee的睡眠定时器是一个24位的定时器,最大定时时间是510s,计算公式:Sleep timer maximum duration = 0xFFFF7F / 32768 Hz = 511.996 seconds
2.睡眠定时器的设置:
默认使用osal_start_timerEx来设置睡眠定时时间,当定时的时间超过最大定时时间则以最大定时时间来唤醒,否则按时间设置的时间来唤醒
uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint32 timeout_value )
源码在:hal_sleep.c文件的halSleep()函数里。
do
{
/* enable sleep timer interrupt */
if(timeout != 0)
{
if (timeout > HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME ))
{
timeout -= HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME );
halSleepSetTimer(HAL_SLEEP_MS_TO_320US( MAX_SLEEP_TIME ));
}
else
{
/* set sleep timer */
halSleepSetTimer(timeout);
timeout = 0;
}
/* set up sleep timer interrupt */
HAL_SLEEP_TIMER_CLEAR_INT();
HAL_SLEEP_TIMER_ENABLE_INT();
}
参考资料:
http://www.cnblogs.com/zjutlitao/p/5683177.html
http://www.cnblogs.com/zjutlitao/p/5683177.html