🛠 Contrôle des GPIO et interfaces simples
Objectifs
Ce tutoriel vise à maîtriser la configuration des broches d'entrée-sortie (GPIO) sur le microcontrôleur HPMicro HPM5100. Vous apprendrez à allumer une LED et à détecter l'état d'un bouton-poussoir, fondements essentiels pour toute interaction physique avec le système.
Matériel nécessaire
- Carte de développement HPM5100 (ex : HPM5151)
- Câble USB-C pour l'alimentation et le débogage
- Un bouton-poussoir et une résistance de pull-up/down si non intégrés
- PC avec SDK HPM v1.13.0 installé
Étapes
Ouvrez une invite de commande et naviguez vers le dossier d'exemple GPIO du SDK. Assurez-vous que les variables d'environnement sont correctement définies pour le HPM5100. ``bash cd hpm_sdk/examples/drivers/gpio ``
- Préparation de l'environnement
Dans le fichier de configuration (souvent board.h ou pin_name.h), identifiez les broches physiques. Pour le HPM5100, consultez la datasheet pour confirmer les numéros de broches disponibles sur votre carte. Par exemple, associez une broche GPIO à une LED et une autre au bouton.
- Configuration matérielle
Ouvrez le fichier principal main.c. Incluez les en-têtes nécessaires et initialisez le système d'horloge. Le cœur RISC-V à 400 MHz nécessite une initialisation précise des périphériques. ```c #include "board.h" #include "hpm_gpio_drv.h"
- Initialisation logicielle
void gpio_init(void) { clock_add_to_group(clock_gpio, 0); gpio_set_pin_output_with_initial_state(BOARD_APP_LED_GPIO_CTRL, BOARD_APP_LED_GPIO_INDEX, BOARD_APP_LED_GPIO_PIN, 0); } ```
Implémentez la logique de basculement. Lisez l'état du bouton pour changer l'état de la LED. Notez que le HPM5100 gère les interruptions GPIO, mais pour ce premier pas, le polling est suffisant. ``c while (1) { uint8_t button_state = gpio_read_pin(BOARD_APP_BUTTON_GPIO_CTRL, BOARD_APP_BUTTON_GPIO_INDEX, BOARD_APP_BUTTON_GPIO_PIN); if (button_state == 0) { gpio_write_pin(BOARD_APP_LED_GPIO_CTRL, BOARD_APP_LED_GPIO_INDEX, BOARD_APP_LED_GPIO_PIN, 1); } else { gpio_write_pin(BOARD_APP_LED_GPIO_CTRL, BOARD_APP_LED_GPIO_INDEX, BOARD_APP_LED_GPIO_PIN, 0); } delay_ms(50); } ``
- Boucle principale
Compilez le projet en spécifiant la cible HPM5100, puis flashez le binaire sur la carte via l'interface USB ou JTAG. ``bash cmake -B build -DBOARD=hpm5100evk cmake --build build ``
- Compilation et flash
Vérification
Ouvrez le moniteur série à 115200 bauds pour vérifier les messages de démarrage. Appuyez sur le bouton physique : la LED doit s'allumer ou s'éteindre immédiatement. Si rien ne se passe, vérifiez les connexions physiques et les numéros de broches dans le code.
Pour aller plus loin
Explorez les interruptions GPIO pour éviter le polling, ou utilisez les timers synchronisés du HPM5100 pour un clignotement précis sans bloquer le processeur.