Forum: Mikrocontroller und Digitale Elektronik wie STM32 GPIO status abfragen wenn Taster gedrückt


von Timo (Gast)


Lesenswert?

Hi,

ich bin totaler STM32 Anfänger aber ich MUSS gerade versuchen an einem 
Evalboard einen GPIO (PB0) Status abfragen ob Taster gedrückt oder 
nicht:

mein Code:
1
  /* Enable  clocks */
2
  RCC_APB2PeriphClockCmd(  RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE );
3
4
  /* Configure HCLK clock as SysTick clock source. */
5
  SysTick_CLKSourceConfig( SysTick_CLKSource_HCLK );
6
        
7
        //Taster initialisieren PBO
8
        GPIO_InitTypeDef GPIO_InitStructure;
9
        
10
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
11
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
12
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
13
        GPIO_Init(GPIOB, &GPIO_InitStructure);
14
15
16
// hier dann funktion für den status des tasters als variable , wo ich nicht weiterkomme
17
18
19
void Button_Data(s16* out)
20
{
21
22
// out soll 9999 sein wenn Tastergedrückt
23
  *out = 
24
  
25
}

von Markus R. (maggus)


Lesenswert?

Oben:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // für pullup
oder
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; // für pulldown
oder
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // für floating

In der Funktion:
1
if(GPIOB->IDR & (1<<GPIO_PinSource0)) { // falls der taster nach VCC zieht, ansonsten negieren
2
   *out = 9999;
3
}
4
else {
5
   *out = 0;
6
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.