реклама на сайте
подробности

 
 
> ARM, Кнопка
SimplyLovely
сообщение Nov 7 2013, 11:03
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 7-11-13
Пользователь №: 79 088



Здравствуйте, столкнулся с проблемой, что не могу найти как сделать однократное прочтение состояния кнопки.

Код
  while(1)
  {
    //Если нажатa кнопка...
    if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)==1)
    {
      Start();
      GPIO_WriteBit (GPIOB,GPIO_Pin_10, Bit_RESET);
    }
    if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11)==1)
    {
      Time += 1000;
      GPIO_ResetBits (GPIOB,GPIO_Pin_11);
    }
    if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12)==1)
    {
      Time -= 1000;
      GPIO_WriteBit (GPIOB,GPIO_Pin_12, Bit_RESET);
    }
        
  }


Мне нужно что бы нажатие кнопки включало функцию один раз, а не несколько раз на протяжении всего времени нажатия.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SimplyLovely
сообщение Nov 8 2013, 16:07
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 7-11-13
Пользователь №: 79 088



Вобщем я сделал так.

Код
  unsigned int check_button1 = 0;//флаг нажатия кнопки
  unsigned int check_button2 = 0;
  unsigned int check_button3 = 0;
   while(1)
  {
    //Если нажатa кнопка...
    if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)==1 && check_button1 == 0)
    {
      Start();
      check_button1 = 1;
    }
    else if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10)== 0)
      check_button1 = 0;
    
    if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11)==1 && check_button2 == 0)
    {
      Time += 1000;
      check_button2 = 1;
    }
    else if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11)== 0)
      check_button2 = 0;
    
    if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12)==1 && check_button3 == 0)
    {
      Time -= 1000;
      check_button3 = 1;
    }
    else if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12)== 0)
      check_button3 = 0;
    
        
  }


Если кому не сложно, подскажите как через приерывания сделать.
И еще как реализовать задержку с помощью таймера TIM_6 или TIM_7.
А то с системным проблемы какие-то у меня, начинает подвисать иногда.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.0129 секунд с 7
ELECTRONIX ©2004-2016