2014-09-19 1 views
0

У меня есть кнопка прерывания:STM32 поднимается и опускается кнопку обнаружения прерывания

void EXTI0_IRQHandler(void) 
    { 
     if (EXTI_GetITStatus(EXTI_Line0) != RESET){ 

      if (/* BUTTON IS RELEASED */) { 
       /* do something */   
      } 
      if (/* BUTTON IS PRESSED */) { 
       /* do something else */ 
      } 
     EXTI_ClearITPendingBit(EXTI_Line0); 
     } 

    } 

Есть ли возможность проверить это?

+2

Что значит «проверить это»? Кроме того, вам следует обратиться за помощью к примерам STM32 GPIO/EXTI и заполнить ваш точный код, который вы используете. Если возможно, укажите также свою платформу (процессор, eval-board, любые связи/соединения, которые вы разместили/спаяли и т. Д.). – bunkerdive

ответ

2

Да, это возможно. Вы должны установить EXTI Триггерный метод как EXTI_Trigger_Rising_Falling. Таким образом, STM32 вводит ISR при подъеме и фронте Fallng. В ISR вы можете управлять выводом GPIO. Если GPIO Pın установлен, он должен быть Rising Edge, иначе он должен быть падающим фронтом.

void EXTI0_IRQHandler(void) 
{ 
    if (EXTI_GetITStatus(EXTI_Line0) != RESET){ 

     if (PIN==1) {//Rising so pressed 
      /* do something */   
     } 
     if (PIN==0) {Falling so released 
      /* do something else */ 
     } 
    EXTI_ClearITPendingBit(EXTI_Line0); 
    } 

} 

ПРИМЕЧАНИЕ: выше ведет себя правильно, при этом выталкивание осуществляется с помощью кнопки. С подтягиванием вверх и падения будут перевернуты.

Смежные вопросы