标题: MCU按键长按短按识别的同一程序,在裸奔程序中能正常运行,而在移植了OS的任务中不不能 [打印本页]

作者: wis98    时间: 2020-3-1 12:28
标题: MCU按键长按短按识别的同一程序,在裸奔程序中能正常运行,而在移植了OS的任务中不不能
按键长按短按识别的同一程序,在裸奔程序中能正常运行,而在移植了OS的任务中不能正常运行,就是下面的按键扫描程序
void KEY_Scan(void)

if(KEY2_DOWN)
         {
                key3_cnt=0;
                key3_Lock=0;                //自锁
               
                  if(key3_Flag==1)  //短按触发标志
          {
                      key3_Flag=0;
                 Key3Sec_1=!Key3Sec_1;    //短按值

          }
          }
else if(key3_Lock==0)
                {        
          key3_cnt++;

          if(key3_cnt>20)
                     {
             key3_Flag=1;   //激活按键短按的有效标志
                        
                     }
                     
                if(key3_cnt>3000)
               {
                  key3_Flag=0;             //清除按键短按的有效标志
                          key3_cnt=0;
                key3_Lock=1;            //自锁按键置位,避免一直触发
                        Key3Sec_2++;    //长按值
                        if(Key3Sec_2>6)Key3Sec_2=0;
                        LED_Flag=!LED_Flag;
          }

                };



程序放到带的OS单片机程序中只有长按值有效,短按无效,在裸奔程序中上面程序是放到定时器中间中的,在OS系统的单片机程序是放在任务中执行的



作者: yxh1999    时间: 2020-3-4 09:21
只能说明一个问题,放的地方不对。短按的时候,只有按键起来后就没有再进你这个任务了。你最好找个时间中断,再去判断一下。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1