微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 定时器问题请教

定时器问题请教

时间:10-02 整理:3721RD 点击:

z-stack mesh 1.0 的ED中,我想控制一候蜂鸣器的发声,需要先发起动命令,延迟一段时间再关掉,类似LED闪烁控制的方法,

//发声控制

HalLcdBeep(...){

...

 osal_set_event (Hal_TaskID, HAL_LCD_BEEP_EVENT);

}

//事件处理中新增

if ( events & HAL_LCD_BEEP_EVENT )
{
  HalLcdBeepUpdate();
  return events ^ HAL_LCD_BEEP_EVENT;
}

//HalLcdBeepUpdate中根据全局变量的状态,打开、关闭声音后通过定时器进入下一步处理

void HalLcdBeepUpdate(void){

       if(t1){

             HalLcdSoundOn();

             ......

             osal_start_timerEx(Hal_TaskID, HAL_LCD_BEEP_EVENT,t1)

        }

      if(t2){

            HalLcdSoundOff();

            ......

     }

}

现在问题是,1分钟内工作正常,超过1分钟后 osal_start_timerEx(Hal_TaskID, HAL_LCD_BEEP_EVENT,t1)无法再触发事件,导至声音打开后无法关闭,不管PWWER_SAVING设置与否都是这样,最后不得已,将控制放在主循环中,在HalLcdBeepUpdate进行Ticks计数,根据HalLcdBeepUpdate返回值决定是否清理此任务

if ( events & HAL_LCD_BEEP_EVENT )
{
    if(HalLcdBeepUpdate())
        return events;
    return events ^ HAL_LCD_BEEP_EVENT;
}

请教下上述定时器为什么工作不正常? 因为与POWER_SAVING无关,所以增加调用osal_pwrmgr_task_state(Hal_TaskId,PWWER_HOLD) 无效

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top