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