嵌入式学习小组
直播中

李静

7年用户 966经验值
私信 关注

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()函数。
求大神解答!

回帖(4)

李伟

2020-5-25 08:11:59
OSTimeDlyHMSM()会导致任务进入阻塞态,但是中断服务函数不是任务!压根就没有阻塞这一说,所以肯定不能在中断服务函数中使用OSTimeDlyHMSM()!
举报

陈小艳

2020-5-25 08:31:11
那就是在ucosiii下,中断函数中如果有延时的话在这段延时之内就不能进行任务切换了?
举报

王飞

2020-5-25 08:41:09
中断里面不能嵌套任务吧
举报

唐行轲

2020-5-25 08:51:13
中断内会锁定任务调度器
举报

更多回帖

发帖
×
20
完善资料,
赚取积分