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

在中断中调用osal_start_timerEx()函数有时会出现马上触发的情况

代码如下:

  if (P1IFG & (1 << 4))
  {
    
    osal_start_timerEx(gu8_simpleBLEPeripheral_TaskID, SBP_URGENCY_UNLOCK_EVT, 3000);     
    P1IFG &= ~(1 << 4);
  }

请问什么时候会出现这种情况呢?

YiKai Chen:

马上触发是指什麼马上被触发?

user5994340:

回复 YiKai Chen:

我这个相当于按下按键3秒后才触发事件的,但是有时候按下按键事件马上就触发了

YiKai Chen:

回复 user5994340:

你是指SBP_URGENCY_UNLOCK_EVT马上就触发了?

user5994340:

回复 YiKai Chen:

是的,事件ID为:
#define SBP_URGENCY_UNLOCK_EVT0x0200

Kevin Qiu1:

回复 user5994340:

出现异常进入中断的次数多吗,多传一些代码看看

YiKai Chen:

回复 user5994340:

每次進入中断都先去停止SBP_URGENCY_UNLOCK_EVT然後在開始SBP_URGENCY_UNLOCK_EVT試試

user5994340:

回复 Kevin Qiu1:

在休眠时按下按键就会出现这种情况,休眠配置为:osal_pwrmgr_device( PWRMGR_BATTERY);HCI_EXT_ClkDivOnHaltCmd( HCI_EXT_ENABLE_CLK_DIVIDE_ON_HALT );

user5994340:

回复 YiKai Chen:

更改成了:
PORT_INTERRUPT_FUNCTION(P1_ISR, P1INT_VECTOR)
{
if(P1IFG & (1 << 3)) {
if(!(P1 & (1 << 3))){MOTOR_OFF();}P1IFG &= ~(1 << 3);}
if(P1IFG & (1 << 4)){osal_stop_timerEx(gu8_simpleBLEPeripheral_TaskID, SBP_URGENCY_UNLOCK_EVT);osal_start_timerEx(gu8_simpleBLEPeripheral_TaskID, SBP_URGENCY_UNLOCK_EVT, 3000);P1IFG &= ~(1 << 4);}P1IF = 0;
}
似乎没有效果

YiKai Chen:

回复 user5994340:

查看看還有沒有其他地方會去啟動SBP_URGENCY_UNLOCK_EVT吧,或是處理SBP_URGENCY_UNLOCK_EVT的前後程序碼有弄錯了?

user5994340:

回复 YiKai Chen:

是只有这里有启动SBP_URGENCY_UNLOCK_EVT的。现在情况是休眠时按下按键,就会马上触发事件;非休眠状态时按下按键则会延时3s触发

赞(0)
未经允许不得转载:TI中文支持网 » 在中断中调用osal_start_timerEx()函数有时会出现马上触发的情况
分享到: 更多 (0)