OpenEdv-开源电子网

标题: UCOSIII外部中断中运用延时的问题 [打印本页]

作者: ligang123    时间: 2017-8-30 15:45
标题: UCOSIII外部中断中运用延时的问题
ucosiii 调用外部中断时如果用延时函数的话是不是不能用OSTimeDlyHMSM()延时啊?我用下面函数的时候没反应,但是换成delay_ms()函数时按下按键就能亮了。
void EXTI4_IRQHandler(void)
{
//        OS_ERR err;
  OSIntEnter();
        if(KEY0==0)
        {
          LED1=0;
                delay_ms(200);
                //OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //Ñóê±500ms
                LED1=1;
        }
        EXTI_ClearITPendingBit(EXTI_Line4);
  OSIntExit();
}  //调用delay_ms()函数


void EXTI4_IRQHandler(void)
{
        OS_ERR err;
  OSIntEnter();
        if(KEY0==0)
        {
          LED1=0;
                //delay_ms(200);
                OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //Ñóê±500ms
                LED1=1;
        }
        EXTI_ClearITPendingBit(EXTI_Line4);
  OSIntExit();
} //调用OSTimeDlyHMSM()函数。

求大神解答!

作者: zuozhongkai    时间: 2017-8-30 16:26
OSTimeDlyHMSM()会导致任务进入阻塞态,但是中断服务函数不是任务!压根就没有阻塞这一说,所以肯定不能在中断服务函数中使用OSTimeDlyHMSM()!
作者: ligang123    时间: 2017-8-30 17:39
zuozhongkai 发表于 2017-8-30 16:26
OSTimeDlyHMSM()会导致任务进入阻塞态,但是中断服务函数不是任务!压根就没有阻塞这一说,所以肯定不能在 ...

那就是在ucosiii下,中断函数中如果有延时的话在这段延时之内就不能进行任务切换了?

作者: ZTO13    时间: 2017-9-14 16:42
中断里面不能嵌套任务吧

作者: wlq19911021    时间: 2017-9-14 17:13
ligang123 发表于 2017-8-30 17:39
那就是在ucosiii下,中断函数中如果有延时的话在这段延时之内就不能进行任务切换了?

中断内会锁定任务调度器




欢迎光临 OpenEdv-开源电子网 (http://openedv.com/) Powered by Discuz! X3.4