5 - Utiliser un "bouton poussoir" avec un "GPIO in" : Différence entre versions

De Wiki L.A.B
Aller à : navigation, rechercher
(Utiliser un "bouton poussoir" avec un "GPIO in")
(Utiliser un "bouton poussoir" avec un "GPIO in")
Ligne 2 : Ligne 2 :
 
Dans cet atelier, on va regarder comment utiliser des GPIO in pour connecter un bouton poussoir. <br>
 
Dans cet atelier, on va regarder comment utiliser des GPIO in pour connecter un bouton poussoir. <br>
 
Dans notre exemple nous allons utiliser la carte “Nucleo64” de référence “NUCLEO-L476RE”. <br>
 
Dans notre exemple nous allons utiliser la carte “Nucleo64” de référence “NUCLEO-L476RE”. <br>
 +
Cette carte embarque un bouton bleu appeler "USER BUTTON" dans la doc. Ainsi on peut l'utiliser sans hardware supplémentaire. <br>
 +
 +
Pour info: Il y a aussi un bouton noir sur la carte. Ceci reset la carte et fait redémarrer le code ("reboot"). <br>
 +
 +
 +
Il y a deux possibilité d'utiliser les bouton poussoir:
 +
* en polling
 +
* avec des interrupt.
 +
 +
=== Utiliser le button poussoir "en polling" ===
 +
 +
 +
=== Utiliser le button poussoir "avec des interrupt" ===
 +
 +
 +
  
  

Version du 22 décembre 2017 à 15:28

Utiliser un "bouton poussoir" avec un "GPIO in"

Dans cet atelier, on va regarder comment utiliser des GPIO in pour connecter un bouton poussoir.
Dans notre exemple nous allons utiliser la carte “Nucleo64” de référence “NUCLEO-L476RE”.
Cette carte embarque un bouton bleu appeler "USER BUTTON" dans la doc. Ainsi on peut l'utiliser sans hardware supplémentaire.

Pour info: Il y a aussi un bouton noir sur la carte. Ceci reset la carte et fait redémarrer le code ("reboot").


Il y a deux possibilité d'utiliser les bouton poussoir:

  • en polling
  • avec des interrupt.

Utiliser le button poussoir "en polling"

Utiliser le button poussoir "avec des interrupt"

 uint8_t ButtonPressed = 0;


  while ( ButtonPressed == 0 )                        // block until button pressed
  {
   GPIO_PinState PinState;
   PinState = HAL_GPIO_ReadPin( GPIOC, GPIO_PIN_13);  // get current state of pin
   if ( PinState == GPIO_PIN_RESET )
    ButtonPressed = 1;
   else
    ButtonPressed = 0;
  }
  HAL_GPIO_WritePin( GPIOA, GPIO_PIN_5, GPIO_PIN_SET);

EXTI

 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)  
 {
  if ( GPIO_Pin == GPIO_PIN_13 )
  {
   GPIO_PinState PinState;
   PinState = HAL_GPIO_ReadPin( GPIOC, GPIO_PIN_13);
   if ( PinState == GPIO_PIN_RESET )
    ButtonPressed = 1;
   else
    ButtonPressed = 0;
  } 
 }