GPIO как узнать когда нажимается кнопка - PullRequest
0 голосов
/ 05 марта 2019

Весь код:

#include <LPC21xx.H>`
#define S1 0x20
#define LED0_bm  0x10000 
#define LED1_bm  0x20000 
#define LED2_bm  0x40000 
#define LED3_bm 0x80000 

int uiReadButton1(){
    unsigned int uiReturnNumber = 0;
    uiReturnNumber = ((IO0PIN&S1)== S1) ? 1: 0;
    return uiReturnNumber;
}

void LedOn(unsigned int uiNumberOfLed){
    switch(uiNumberOfLed){
        case 0:
            IO1SET = IO1SET|LED0_bm;
            break;
        case 1:
            IO1SET = IO1SET|LED1_bm;
            break;
    }

}
int main(){
    int iPress;
    IO1DIR = IO1DIR|LED0_bm|LED1_bm;
    IO0DIR = IO0DIR|S1; 
    IO0SET = IO0SET|S1; 
    iPress = uiReadButton1();
    LedOn(iPress);  
}

В обучении говорилось, что если кнопка нажата - соответствующий PIN-код имеет логическое значение 0, а когда он не нажат, PIN-код имеет логическое значение 1.

OKпоэтому я настроил направление ввода:

IO0DIR = IO0DIR|S1; 

Я получил что-то вроде этого: отладка IO0DIR

Далее я использовал:

IO0SET = IO0SET|S1; 

возобновление использования IO0SET

И мой квест - в этом случае кнопка нажата или не нажата?По логике он должен быть не нажат, потому что флажок установлен, но с другой стороны по умолчанию кнопка нажимается после использования IO0DIR ...

...