欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 下面單片機程序在裸機上正常,在OS任務中只能識別短按,無法得到長按值,不知為何 [打印本頁]

作者: wis98    時間: 2020-3-6 11:18
標題: 下面單片機程序在裸機上正常,在OS任務中只能識別短按,無法得到長按值,不知為何
下面程序在裸機上正常,在OS任務中只能識別短按,無法得到長按值,不知為何,請高手指點

#define const_key_time_short1  20    //短按的按鍵去抖動延時的時間

#define const_key_time_long1   400     //長按的按鍵去抖動延時的時間

#define const_key_time_short2  20    //短按的按鍵去抖動延時的時間

#define const_key_time_long2   400     //長按的按鍵去抖動延時的時間


void task4_task(void * pvParameters)      //OS任務

{

          static int uiKeyTimeCnt1=0;

        static u8  ucKeyLock1=0;

        static u8  ucShortTouchFlag1=0;



  while(1)        

        {

        

        



  if(KEY2==1)//IO是高電平,說明兩個按鍵沒有全部被按下,這時要及時清零一些標志位

  {

      ucKeyLock1=0; //按鍵自鎖標志清零

      uiKeyTimeCnt1=0;//按鍵去抖動延時計數器清零,此行非常巧妙,是我實戰中摸索出來的。   

            if(ucShortTouchFlag1==1)  //短按觸發標志

          {

             ucShortTouchFlag1=0;

                 K2Sec_1=1;    //觸發一號鍵的短按

          }

  }

  else if(ucKeyLock1==0)//有按鍵按下,且是第一次被按下

  {

     uiKeyTimeCnt1++; //累加定時中斷次數

     if(uiKeyTimeCnt1>const_key_time_short1)

     {

            ucShortTouchFlag1=1;   //激活按鍵短按的有效標志  

     }



     if(uiKeyTimeCnt1>const_key_time_long1)

     {

            ucShortTouchFlag1=0;  //清除按鍵短按的有效標志



        uiKeyTimeCnt1=0;

        ucKeyLock1=1;  //自鎖按鍵置位,避免一直觸發



        K2Sec_1=2;    //觸發1號鍵的長按



     }



  }





printf("task-2:%d\r\n",K2Sec_1);



           vTaskDelay(100 / portTICK_RATE_MS);  //增加延時節拍函數

        }

}







歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1