Vous êtes sur la page 1sur 15

République Tunisienne

Ministère de l’Enseignement Supérieur


et Recherche Scientifique
Université de Gabés

I S
NSTITUT UPÉRIEUR DES S I
YSTÈMES NDUSTRIELS DE G ABÈS

Fascicule de Travaux
pratiques
Réseaux locaux de communication

ELABORÉ PAR :

Mabrouka Gmiden

ENSEIGNÉ POUR LE CLASSE :


 SARI3

ANNÉE UNIVERSITAIRE
2021/2022
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

TP N°1

“Hello world LED”: Utilisation des GPIOs

I. Objectifs
Le but de ce TP est de se familiariser avec le processeur STMicroelectronics Cortex ™ -M4 et de
maitriser le logiciel STM32CubeIDE.

La manipulation contient 3 applications : commande de LED, programme « Blinky », et


commande de LED par bouton poussoir

II. Introduction

STM32F4

Les microcontrôleurs (microC, uc et MCU), sont des ordinateurs minimalistes comme les cartes
Arduino. Ils possèdent de nombreux canaux de transmission appelés BUS (UART, I2C ou SPI).
Ces BUS permettent de commander des actionneurs, communiquer avec des capteurs voire
échanger avec d'autres microcontrôleurs. Ainsi les MCU sont fréquemment utilisés pour les
robots :), mais aussi dans tous les systèmes embarqués. Par exemple dans l’automobile,
l'aviation, les télécommandes, les jouets, la téléphonie mobile, etc.

La famille des microcontrôleur STM32f4 de ST Microelectronics fournit une vaste gamme de


périphériques autour d’un cœur ARM®Cortex®-M4 32-bit. Dans ce TP, on considère la carte
STM32f407VG. Les caractéristiques et les fonctionnalités de cette carte sont accessibles depuis
ses 100 ports broches (Pins) ainsi que d’autres périphériques de liaisons, allant des simples
GPIOs et des interfaces de communication série synchrone (SPI) ou asynchrone (RS232)
jusqu’aux interfaces plus complexes comme l’USB, l'Ethernet et le HDMI, etc.

1
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

STM32CubeIDE

Les MCU ne possèdent pas de système d’exploitation . De ce fait, les programmes au sein de
MCU sont souvent codés, compilés puis téléversés par un ordinateur extérieur.

Pour programmer la carte STM32, plusieurs environnements de programmations peuvent être


employés. Ces environnements, souvent appelés IDE (Integrated Development Environment),
sont de types multiples mais qui se basent tous sur le langage de programmation C. Auparavant,
deux outils étaient nécessaires : TrueSTUDIO (Atollic) et l'outil graphique STM32CubeMX
(ST). En 2019, ST a racheté Atollic et les deux logiciels ont été fusionnés pour former
STM32CubeIDE.

STM32CubeIDE est une plate-forme de développement C/C++ avancée avec des fonctionnalités
de configuration périphérique, de génération de code, de compilation de code et de débogage
pour les microcontrôleurs et microprocesseurs STM32. Il est basé sur le frameworkn
ECLIPSE™/CDT et la chaîne d'outils GCC pour le développement, et GDB pour le débogage. .Il
permet :

• De configurer les périphériques


• D’écrire l'application en C ou C++
• De télécharger l'application dans une cible
• De débugger l'application

STM32CubeIDE est librement téléchargeable sur le site ST (STM32CubeIDE)

III. Hello world LED: Utilisation des GPIOs


Dans cette partie, nous allons apprendre diverse manière d'allumer une LED à partir des GPIOs
de notre carte.

Présentation des GPIOs

GPIO signifie General Purpose Input Output, il s'agit donc des entrées et des sorties des pins de
votre carte. En output, il peut vous permettre d'activer (Enable) un pin d'un de vos composants
ou bien d’allumer une LED. En input, il peut permettre de détecter l'état d'un composant
extérieur par exemple celui d'un bouton poussoir.

2
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

Les fonctions HAL GPIO

• HAL_GPIO_ReadPin(gpio-port, gpio-pin)

• HAL_GPIO_TogglePin(gpio-port, gpio-pin)

• HAL_GPIO_WritePin(gpio-port, gpio-pin, pin-state)

III.1. Commande de LED


Dans cet exercice, nous allons commander la LED PA5 de STM32F407.

a Création de projet

• Démarrer l'application STM32CubeIDE. Une première fenêtre s'ouvre :

• On indique dans cette fenêtre le répertoire de travail. Ce répertoire constituera un espace


des projets : Workspace, dans lequel plusieurs projets pourront figurer.

On peut modifier le chemin proposé en cliquant sur

• Cliquer sur

• Aller ensuite dans File >> New >> STM32 Project

3
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

• Cliquer sur Board Selector :

• Dans Type, cocher Arm Cortex-M4 :

• Dans MCU/MPU Series, cocher STM32F4 :

4
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

Dans la partie droite, cocher la carte STM32F407VGTx :

Cliquer

Dans la fenêtre suivante, choisir un nom de projet (ici, on prend le nom Test_LED) :

Test-LED

Cliquer enfin

Une fenêtre s'ouvre alors. Elle permet d'initialiser les périphériques internes dans leur mode par
défaut. Ceci est préférable, dans la mesure où les pattes utilisées par la carte seront ainsi
référencées.

Cliquer
5
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

b Configuration des pines

A l'ouverture du projet, on obtient la visualisation du microcontrôleur suivante :


• Dans la configuration de RCC (Reset and clock control), choisir que Cristal/Ceramic
Resonator comme High Speed Clock (HSE) :

Les broches correspondantes PH0_IN et PH1_OUT sont affectées et configurées


automatiquement.

• Dans la configuration de SYS, choisir Serial Wire comme interface de débogage :

6
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

Les pines PA13 et PA14 sont activées et configurées automatiquement.


Lorsqu'une carte est sélectionnée, STM32CubeMX permet automatiquement le réglage du
brochage de la carte avec les affectations de broches pour les interfaces de communication, les
LED et d'autres fonctions.
(Pour configurer les broches LED, vérifiez dans le manuel de l'utilisateur des cartes STM32
Nucleo-64 et la fiche technique STM32L476xx quelles broches LED utiliser).
• Cet exemple permet l'utilisation de la broche LED bleu PD15 présenté sur la carte
STM32F4 comme GPIO_Output. Pour la vérification : cliquer que PD15 et vérifier que
GPIO_Output est sélectionné.

7
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

c Configuration de clock

Dans l'onglet Clock Configuration, vérifiez que STM32CubeMX configure automatiquement


l'oscillateur interne dans le système d'horloge avec PLL à 16MHz et propose la configuration
PLL comme suit :
1. HSI (horloge interne haute vitesse) sélectionné pour le PLL Source Mux
2. HSI sélectionné dans le System Clock Mux
3. HCLK défini sur 16MHZ

d Configuration de projet et génération de code source

Basculez vers l'onglet Project Manager (Gestionnaire de projets) pour configurer le projet. Dans
l'onglet Projet :
• Vérifiez le nom du projet et l’emplacement du projet
• Vérifiez que le Toolchain/IDE sélectionné est STM32CubeIDE.

8
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

Dans l'onglet Générateur de code, assurez-vous que les options suivantes sont cochées :
• Dans la section STM32Cube Firmware Library Package : Copiez toutes les
bibliothèques utilisées dans le dossier du projet.
• Dans la section Fichiers générés : conservez le code utilisateur lors de la régénération
de l'option de code C, qui s'applique uniquement aux sections utilisateur dans les
fichiers générés STM32CubeMX.

Pour générer le projet dans STM32CubeIDE :

• Cliquez sur Générer le code.

• Cliquez sur Ouvrir le projet pour ouvrir le projet avec STM32CubeIDE.

9
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

10
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

e Éditez main.c pour commander la LED

Dans STM32CubeIDE, à partir de l'onglet Explorateur de projet, ouvrez le fichier main.c, dans
le dossier Src et ajoutez les fonctions adéquates pour le clignotement de la LED, en utilisant les
fonctions HAL.

Le code utilisateur peut être ajouté dans le fichier main.c, à l'intérieur de la boucle while (1) entre
les sections /* USER CODE BEGIN 3 */ et /* USER CODE END 3 */ (cela conservera votre
code après régénération).
Commande d’une LED
Pour alimenter une LED, nous allons utiliser la fonction HAL_GPIO_WritePin (GPIOx,
GPIO_Pin, PinState) entre les balises /* USER CODE BEGIN 2 */ et /* USER CODE END 2 */.
Cette fonction permet de commander l'état d'un port GPIO en OUTPUT.
Le premier argument correspond à la famille du GPIO qui correspond à une lettre par exemple
GPIOA, GPIOB et etc. Le second argument correspond au numéro du GPIO. Le troisième
correspond à l'état haut ou bas du GPIO. Vous pouvez entrer 1 ou 0 ou bien les constantes SET
ou RESET pour plus lisibilité.

11
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

f Build/Construire le projet

Pour alimenter la carte, utilisez son connecteur CN1 pour vous connecter à un ordinateur via un
câble USB Type-A.
Cliquez sur le projet depuis l'explorateur de projet, puis faites un clic droit et sélectionnez Build
Project, pour compiler le projet (ou cliquez sur le bouton Build de la barre d'outils).

g Déboguer le projet

Cliquez sur Debug >> Debug configuration de la barre d'outils et vérifier les paramètres de
débogage suivants puis cliquez sur Debug

12
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

Cliquer sur Run pour executer le programme et regardez maintenant la LED Bleu allumée sur la
carte STM32F4.

13
TP Réseaux locaux de communication ISSIG/2021-2022 Mabrouka Gmiden

III.2. Exercice 2 : programme « Blinky »


On veut maintenant clignoter la LED bleu chaque 100 ms. Nous allons utiliser ces fonctions
entre les balises /* USER CODE BEGIN 3 */ et /* USER CODE END 3 */ :

HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_15);

HAL_Delay (100); /* Insert delay 100 ms */

III.3. Exercice 2 : Commande d’une LED avec bouton poussoir

Dans cet exercice on va commander la LED avec le bouton poussoir PA0. Lorsque on appuie
une fois sur le bouton, la LED PD15 clignote et lorsque l'on appuie une seconde fois elle
s'éteint.Pour notre application, nous allons utiliser les fonctions indiquées dans la section HAL
GPIO Functions

14

Vous aimerez peut-être aussi