Telechargé par mabrouka gmiden

TP réseaux locaux indust TP1

publicité
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
Fascicule de Travaux
pratiques
G
ABÈS
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
•
Cliquer sur Board Selector :
•
Dans Type, cocher Arm Cortex-M4 :
•
Dans MCU/MPU Series, cocher STM32F4 :
4
Mabrouka Gmiden
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
10
Mabrouka Gmiden
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
f
ISSIG/2021-2022
Mabrouka Gmiden
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
III.2.
ISSIG/2021-2022
Mabrouka Gmiden
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);
III.3.
/* Insert delay 100 ms */
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
Téléchargement