zigbee的睡眠定时器

时间:2022-02-12 00:12:17

1.zigbee的睡眠定时器是一个24位的定时器,最大定时时间是510s,计算公式:Sleep timer maximum duration = 0xFFFF7F / 32768 Hz = 511.996 seconds

zigbee的睡眠定时器

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