Difference between revisions of "Exercice STM Nucleo FCU"

From beeplane
Jump to navigation Jump to search
Line 50: Line 50:
  
 
==Exercice 1 : Faire clignoter une LED==
 
==Exercice 1 : Faire clignoter une LED==
 +
 +
<h3><b>Etape 1 : branchements</b></h3>
 +
Branchez une LED sur une broche GPIO (par exemple, la broche PA5) de la carte Nucleo en utilisant une résistance de limitation de courant (par exemple, une résistance de 220 ohms) en série avec la LED. La borne positive de la LED doit être connectée à la broche GPIO et la borne négative doit être connectée à la résistance, puis à la masse (GND) de la carte.
 +
 +
<h3><b>Etape 2 : initialisation</b></h3>
 +
Il est important de commencer par disposer d’un IDE (Integrated Developement Environnement) adapté au micro-controleur STM32. Créer un nouveau projet pour la carte Nucléo en sélectionnant le type de microcontrôleur utilisé sur votre carte Nucleo (ici STM32).
 +
 +
Ajoutez un fichier source "main.c" à votre projet.  Ajoutez le fichier d'en-tête pour le microcontrôleur utilisé dans la carte Nucleo (par exemple, stm32fxxx.h). Ce sont les headers de la bibliothèque HAL.
 +
 +
IMG EXERCICE 1_1
 +
 +
Initialisez la broche GPIO pour la sortie en écrivant un 1 dans le registre de configuration approprié (par exemple, GPIOA->MODER |= GPIO_MODER_MODE5_0).
 +
 +
<h3><b>Etape 3 : code</b></h3>
 +
 +
Bouclez indéfiniment et allumez la LED en écrivant un 1 dans le registre de sortie (par exemple, GPIOA->BSRR = GPIO_BSRR_BS5) pendant une courte période, puis éteignez la LED en écrivant un 1 dans le registre de sortie (par exemple, GPIOA->BSRR = GPIO_BSRR_BR5) pendant une autre courte période. Répétez cette séquence pour faire clignoter la LED.
 +
 +
Voici un exemple de code en langage C qui utilise la carte Nucleo STM32F401RE pour faire clignoter une LED connectée à la broche PA5
 +
 +
IMG EXERCICE 1_2
 +
 +
<font color = "blue">Remarque : </font>Les codes utilisent ici la broche PA5 pour la sortie de la LED, il faut bien sûr s'adapter à la broche sur laquelle on est branché. Ce code utilise la fonction "for" pour attendre pendant une courte période après chaque changement d'état de la LED. Le nombre de boucles peut être ajusté pour changer la vitesse de clignotement de la LED.
 +
 +
<font color = "blue">Aide : </font>Voici un schéma de branchement de branchement typique pour une LED sur une carte Nucléo
 +
 +
IMG EXERCICE 1_3
 +
 +
Dans ce schéma, R1 est la résistance de limitation de courant et GPIO est la broche GPIO de la carte Nucleo à laquelle la LED est connectée. La borne positive de la LED est connectée à la broche GPIO et la borne négative est connectée à la résistance, puis à la masse (GND) de la carte.
 +
 +
Notez que la valeur de la résistance R1 dépend de la tension d'alimentation de votre carte Nucleo et de la caractéristique de la LED que vous utilisez. Une valeur typique pour la résistance est de 220 ohms.

Revision as of 11:11, 16 March 2023

Vous trouverez sur cette page toutes les informations, exercices, et fichiers nécessaires à la prise en main et à la réalisation d'un prototype de FCU (Flight Control Unit) dans le cadre de travaux dirigés (TD) à faire en classe.


Fonctions de base Nucleo

Void HAL_GPI0_Init() : Cette fonction est utilisée pour initialiser les broches d’entrée ou de sortie pour les LEDs ou les boutons disponibles sur la carte Nucleo.

Void HAL_UART_Init() : Cette fonction est utilisée pour initialiser le module UART (communication série), qui sert à communiquer avec l’ordinateur.

Void HAL_TIM_Base_Start() : Cette fonction est utilisée pour démarrer un timer, utile par exemple pour mettre à jour périodiquement un affichage ou une mesure d’un capteur.

Void HAL_GPI0_ReadPin/WritePin() : Cette fonction permet de lire ou d’écrire l’état d’un port de la carte Nucleo.


Installation des bibliothèques STM Nucleo dans le logiciel Arduino

Carte Nucleo utilisée

La carte X-Nucleo IKS01A2 fonctionne de la même manière qu’une carte Arduino, d’ailleurs on utilise le même logiciel (Arduino) pour la faire foctionner et reccueillir des informations.

Afin de pouvoir commander cette carte par l’intermédiaire du logiciel Arduino, il est nécessaire d’installer une bibliothèque accessible via ce lien : https://www.arduinolibraries.info/libraries/stm32duino-x-nucleo-iks01-a2

Site stm32.png

Prendre la dernière version disponible. Un fichier .zip sera alors téléchargé sur votre ordinateur.

Sur Arduino, aller dans Croquis -> Inclure une bibliothèque -> Ajouter la bibliothèque .ZIP.

Sélectionner le fichier téléchargé précédemment (ne pas le décompresser).

Installation1.png

Pour inclure cette bibliothèque dans le code, aller dans Croquis -> Inclure une bibliothèque ->STM32duino-X-NUCLEO-IKS01A2, la ligne de code #include <X-NUCLEO-IKS01A2.h> doit apparaître.

Installation 2.png

Il faut maintenant installer le protocole de communication utilisé pour la carte Nucleo. Pour cela, aller dans Fichier -> Préférences, puis rentrer ce lien dans URL de gestionnaire de cartes supplémentaires : https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json

Cliquer ensuite sur OK.

Installation3.png

Le protocole est maintenant téléchargé, pour l’installer, aller dans Outils -> Type de carte -> Gestionnaire de carte.

Dans la barre de recherche, taper « stm », vous devriez avoir l’écran suivant :

Installation4.png

Sélectionner la dernière version disponible (ici 2.4.0) puis Installer. Le processus prend quelques minutes. Si tout s’est bien déroulé, la mention INSTALLED doit apparaître.

Exercice 1 : Faire clignoter une LED

Etape 1 : branchements

Branchez une LED sur une broche GPIO (par exemple, la broche PA5) de la carte Nucleo en utilisant une résistance de limitation de courant (par exemple, une résistance de 220 ohms) en série avec la LED. La borne positive de la LED doit être connectée à la broche GPIO et la borne négative doit être connectée à la résistance, puis à la masse (GND) de la carte.

Etape 2 : initialisation

Il est important de commencer par disposer d’un IDE (Integrated Developement Environnement) adapté au micro-controleur STM32. Créer un nouveau projet pour la carte Nucléo en sélectionnant le type de microcontrôleur utilisé sur votre carte Nucleo (ici STM32).

Ajoutez un fichier source "main.c" à votre projet. Ajoutez le fichier d'en-tête pour le microcontrôleur utilisé dans la carte Nucleo (par exemple, stm32fxxx.h). Ce sont les headers de la bibliothèque HAL.

IMG EXERCICE 1_1

Initialisez la broche GPIO pour la sortie en écrivant un 1 dans le registre de configuration approprié (par exemple, GPIOA->MODER |= GPIO_MODER_MODE5_0).

Etape 3 : code

Bouclez indéfiniment et allumez la LED en écrivant un 1 dans le registre de sortie (par exemple, GPIOA->BSRR = GPIO_BSRR_BS5) pendant une courte période, puis éteignez la LED en écrivant un 1 dans le registre de sortie (par exemple, GPIOA->BSRR = GPIO_BSRR_BR5) pendant une autre courte période. Répétez cette séquence pour faire clignoter la LED.

Voici un exemple de code en langage C qui utilise la carte Nucleo STM32F401RE pour faire clignoter une LED connectée à la broche PA5

IMG EXERCICE 1_2

Remarque : Les codes utilisent ici la broche PA5 pour la sortie de la LED, il faut bien sûr s'adapter à la broche sur laquelle on est branché. Ce code utilise la fonction "for" pour attendre pendant une courte période après chaque changement d'état de la LED. Le nombre de boucles peut être ajusté pour changer la vitesse de clignotement de la LED.

Aide : Voici un schéma de branchement de branchement typique pour une LED sur une carte Nucléo

IMG EXERCICE 1_3

Dans ce schéma, R1 est la résistance de limitation de courant et GPIO est la broche GPIO de la carte Nucleo à laquelle la LED est connectée. La borne positive de la LED est connectée à la broche GPIO et la borne négative est connectée à la résistance, puis à la masse (GND) de la carte.

Notez que la valeur de la résistance R1 dépend de la tension d'alimentation de votre carte Nucleo et de la caractéristique de la LED que vous utilisez. Une valeur typique pour la résistance est de 220 ohms.