0% ont trouvé ce document utile (0 vote)
38 vues8 pages

40 - TP Gpio-Ciel-Er1

Cette séance de travaux pratiques sur la gestion des GPIO avec le microcontrôleur STM32F303 vise à enseigner aux étudiants les rôles des GPIO, leur organisation, et les instructions de commande de la librairie HAL. Les étudiants apprendront à concevoir des programmes qui utilisent des entrées pour contrôler des sorties, tout en se familiarisant avec l'environnement de développement STM32 Cube IDE. Des exercices pratiques sont également proposés pour appliquer les connaissances acquises sur la gestion des entrées et sorties.

Transféré par

ismaelchatelain92
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
38 vues8 pages

40 - TP Gpio-Ciel-Er1

Cette séance de travaux pratiques sur la gestion des GPIO avec le microcontrôleur STM32F303 vise à enseigner aux étudiants les rôles des GPIO, leur organisation, et les instructions de commande de la librairie HAL. Les étudiants apprendront à concevoir des programmes qui utilisent des entrées pour contrôler des sorties, tout en se familiarisant avec l'environnement de développement STM32 Cube IDE. Des exercices pratiques sont également proposés pour appliquer les connaissances acquises sur la gestion des entrées et sorties.

Transféré par

ismaelchatelain92
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

S

Environnement STM32
STM32 Cube IDE
SEQUENCE 4

Séance 40 : Gestion des Global Port Input Output (GPIO)

Travaux pratiques

Objectif de la séance
A la fin de la séance, l’étudiant doit être capable de :
- Connaître les rôles des GPIO.
- Connaître l’organisation des ports et savoir repérer les broches.
- Connaître les instructions de commande des sorties de la librairie HAL de ST.
- Connaître les instructions de commande des entrées de la librairies HAL de ST.
- Maîtriser la notion de VARIABLE Mémoire.
- Ecrire des programmes dans lesquels les sorties dépendent des entrées en utilisant des Tests
« While », « if », « if… then…else ».
- Utiliser l’environnement de debuggage pour valider le fonctionnement des programmes.

I] INTRODUCTION

Le microcontrôleur STM32F303 dispose d’interfaces d’entrée et de sortie nous permettant de


recevoir des informations binaires de l’extérieur (entrées) et de commander des actions extérieures
(sorties).
Ce TP vous amène à mettre en œuvre les fonctions logicielles de la librairie HAL fournie par ST
Microelectronics.
Vous allez concevoir des programmes qui prendront des décisions à partir des informations
d’entrée pour commander des actionneurs via les sorties.

Lycée G. Eiffel Armentières Page 1 sur 8 BTS CIEL-ER-1


S

Environnement STM32
STM32 Cube IDE
SEQUENCE 4

II] DECOUVERTE DES GPIO DE LA CARTE STM32303E-Eval

La carte :

Le microcontroleur STM32 dispose de broches dédiées aux GPIO. Ces broches sont disponibles sur des
connecteurs extérieurs et commandent également des fonctions internes de la carte (Leds, BP, Joystick…).

1°) Les broches GPIO du microcontroleur.

Vous vous appuyez sur le document « 41_document constructeur du [Link] ».


Vous utiliserez la commande find en cliquant sur « contrôle F » pour rechercher le terme GPIO, pour
répondre aux questions suivantes :
a) Combien de broches GPIO sont disponibles sur la version STM32F303Rx (repère 3/42 de la
recherche)
b) Décrire les ports GPIO disponibles sur la version STM32F303xC, en indiquant le nom des ports et
le nombre de broches de chaque port (repère4/42)
c) Indiquer les 5 fonctions possibles pour chacune des GPIO. (repère 13/42)
d) Que se passe-t-il si une GPIO est utilisée par une fonction spécialisée alternative analogique ou
digitale ? Est-elle toujours utilisable comme GPIO ? (repère 15/42)
e) Quel est le courant max que peut fournir une GPIO ? (repère 39/42)

2°) Les connecteurs GPIO de la carte STM32F303E_EVAL

Vous vous appuyez sur le document « 42_user manual [Link] ».


Vous utiliserez la commande find en cliquant sur « contrôle F » pour rechercher le terme GPIO, pour
répondre aux questions suivantes :
Nous étudions le cas de la GPIO PA11.

Lycée G. Eiffel Armentières Page 2 sur 8 BTS CIEL-ER-1


S

Environnement STM32
STM32 Cube IDE
SEQUENCE 4

a) Sur quel connecteur nous pouvons trouver la broche PA11 ? (repère 1/1 de la recherche)
b) Quel est le numéro de la broche de ce connecteur pour PA11 ? (repère 1/1 de la recherche)
c) Sur la carte STM32303E_EVAL repérer le connecteur et la broche relative à PA11.
d) Quelle est la fonction spécialisée alternative de la broche PA11 ? (repère 1/1 de la recherche)
e) Que se passe-t-il si la broche PA11 est utilisée par la fonction spécialisée alternative USB? Est-
elle toujours utilisable comme GPIO ?
f) Comment pouvons nous déconnecter la broche PA11 de la fonction spécialisée USB ? (repère 1/1
de la recherche) ?

III] LE LOGICIEL DE DEVELOPPEMENT STM32 CUBE IDE

L’environnement de développement logiciel se nomme STM32 Cube IDE.

STM32Cube IDE permet :


- De créer un projet de programmation qui gérera l’organisation de tous les fichiers nécessaires.
- De fournir des librairies STmicroélectronics pour l’ensemble des processeurs STM32. Ces librairies
nous faciliteront la programmation. Une librairie spéciale est fournie pour le microcontroleur
STM32 F303.
- De configurer l’utilisation des broches du microcontroleur
- D’éditer un programme
- De compiler le programme
- De charger le programme executable dans la mémoire du microcontroleur

Lycée G. Eiffel Armentières Page 3 sur 8 BTS CIEL-ER-1


S

Environnement STM32
STM32 Cube IDE
SEQUENCE 4

- De « debugger » le programme en nous permettant de la lancer, de le faire fonctionner petit bout


par petit bout, et de visualiser le contenu des mémoires.

1°) Indiquer de quelle manière nous pouvons préciser qu’une broche GPIO est une entrée, une sortie ou
une broche de fonction spécialisée ?
2°) Lorsque nous indiquons que nous utilisons la carte STM323303E_EVAL dans ce logiciel que deviennent
automatiquement les GPIO ?

IV] LES GPIO EN SORTIES.

1°) Statut électrique de la GPIO en sortie.

Pour rappel, une GPIO configurée en sortie devient un générateur de tension.


Elle fournira une tension de 0V pour un niveau logique bas et 3.3V pour un niveau logique haut.
Elle ne pourra pas fournir un courant de plus de 8mA ou plus de 20 mA (en fonction du câblage) ; ce
n’est donc pas une sortie de puissance et il faudra être vigilant sur l’actionneur que nous voudrons
commander.

2°) Les fonctions de la librairie HAL pour commander les sorties.

Ce sont des fonctions de la librairie « hal_gpio.h ».

- HAL_Delay () ; Cette fonction permet de faire passer du temps au microcontrôleur à ne rien faire.
On indique le nombre de millisecondes entre les parenthèses.
o Ex : HAL_Delay (55) ;

- HAL_GPIO_TogglePin (GPIO_TypeDef* GPIOx, uint16_t GPIO_PIN) ; Cette fonction permet de faire


changer l’état de la sortie concernée
o Ex : HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_6);

- HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); Cette


fonction permet de fixer l’état logique sur la sortie concernée en fonction de la valeur de
GPIO_PinState PinState ( GPIO_PIN_SET pour mettre à 1 et GPIO_PIN_RESET pour mettre à 0.
o Ex : HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET) ;
o Ex : HAL_GPIO_WritePin(GPIOC,GPIO_PIN_3, GPIO_PIN_RESET);

Lycée G. Eiffel Armentières Page 4 sur 8 BTS CIEL-ER-1


S

Environnement STM32
STM32 Cube IDE
SEQUENCE 4

V] LES GPIO EN ENTREES.

1°) Statut électrique de la GPIO en entrée.

Pour rappel, une GPIO configurée en entrée présente une impédance quasiment infinie.
On considère donc qu’une entrée GPIO ne consomme quasiment rien ; on posera que le courant d’entrée
d’une GPIO en entrée est nul.

2°) Notion de variable mémoires.

a) Pour lire l’état des entrées afin de recevoir des informations de l’extérieur du
microcontrôleur, il va falloir lire l’état d’une entrée puis stocker cette information dans
une case mémoire du microcontrôleur.
Pour faciliter le stockage et la relecture, nous disposons de la possibilité de nommer
ces cases ; on parle alors de variable que nous devons déclarer dans un premier temps pour
pouvoir les utiliser par la suite.
b) Le STM32, comme son nom l’indique manipule des données de 32 bits. Ses mémoires
sont donc constituées de « cases » de 32 bits disposant chacune d’une adresse unique
que l’on peut représenter comme suit :
Lorsque nous déclarons une variable avec un « nom », le logiciel réserve un
certain nombre de bits qu’il place lui-même dans les mémoires vives en fonction de leur
taille. Pour les retrouver, nous n’aurons pas besoin de connaître leurs adresses, mais
uniquement leurs noms.
Exemples : Ces variables peuvent être de 1 (a,b) , 8 (c,d), 16 (e,f), 32 (g) ou 64 (h)
bits dans l’environnement STM32.

Adresse

31 0 0
b a 1
d d d d d d d d c c c c c c c c 2
e e E e e E e e e e e e e e e e f f f f f f f f f f f f f f f f 3
g g G g g G g g g g g g g g g g g g g g g g g g g g g g g g g g 4
h h H h h H h h h h h h h h h h h h h h h h h h h h h h h h h h 5
h h H h h H h h h h h h h h h h h h h h h h h h h h h h h h h h 6
7
8
9
10
11
.
.
.
.
.
.
.
512

Lycée G. Eiffel Armentières Page 5 sur 8 BTS CIEL-ER-1


S

Environnement STM32
STM32 Cube IDE
SEQUENCE 4

c) Toutes les informations utiles au programme (« données ») sont mémorisées dans


ces VARIABLES, c’est‐à-dire des emplacements mémoire accessibles en lecture et en
écriture. L’emplacement mémoire d’une variable est créé (alloué) lors de
la définition (parfois appelée déclaration) de la variable.

d) Quel nom donner à une variable ?


Les identificateurs sont des noms qui permettent de désigner un objet manipulé dans
le programme : variables et fonctions principalement.
Un identificateur est formé d'une suite de lettres (a, ..., z, A, ..., Z), de chiffres (0, ..., 9) et du
signe de soulignement (_). Il commence obligatoirement par une lettre ou par _. Il ne peut
comporter aucun espace, car celui‐ci est un séparateur en C. Les 32 premiers caractères sont
seuls significatifs.

En Langage C, les minuscules et les majuscules ne sont pas équivalentes et constituent des
caractères différents. Par ailleurs, les caractères accentués sont interdits.
Exemples d'identificateurs (tous différents) : moy_geom, MoyArith, resultat_1, data_4octets,
somme,
Somme, Prix_Article, masse_proton, …

Ne pas donner à une variable un nom entièrement écrit en majuscules : les noms en majuscules
sont réservés aux constantes.

Choisir des noms "expressifs", donc suffisamment longs. Il faut utiliser le caractère souligné ou
les majuscules pour les noms composés (exemple : moy_geom ou MoyGeom).

e) En langage C existent trois familles de types de base :


– les types entiers (bâtis autour du mot‐clé int) permettent de représenter les nombres entiers
signés ou non-signés ;
– les types réels (mot‐clé float ou double) permettent de représenter les nombres réels (parfois
appelés « flottants » en informatique) ;
– le type « octet » (mot‐clé char) permet de représenter les variables occupant un seul octet, entre
particulier les caractères ; il s’agit en réalité d’un type entier.
Par défaut, tous les types sont considérés comme signés (signed), sauf le type char. Mais on peut
rajouter le mot‐clé unsigned devant le type de la variable si nécessaire

Nous utiliserons dans un premier temps pour cette séance, les variables
- Uint1_t, uint8_t et uint16_t. Variables de type non signés de 1, 8 ou 16 bits.

Déclaration d’une variable :


Ex : uint8_t Temperature = 0 ; ici on déclare une variable nommée « Temperature » entier non signé de 8
bits (0 à 255) qui prendra « 0 » comme valeur au départ du programme.

Lycée G. Eiffel Armentières Page 6 sur 8 BTS CIEL-ER-1


S

Environnement STM32
STM32 Cube IDE
SEQUENCE 4

3°) Les fonctions de la librairie HAL pour acquérir l’état d’une entrée.

Ce sont des fonctions de la librairie « hal_gpio.h ».

- HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); cette fonction lit la valeur logique


présente sur l’entrée concernée et la renvoie : il faudra donc la stocker dans une variable pour la
conserver.
Pour stocker cette valeur, on utilise l’opérateur d’affectation « = » qui une fois exécuté déplace ce
qu’il y a à droite sur la gauche :
Ex : Temperature = 27 ; après cette ligne la variable Température prend la valeur 27.

Dans le cas de la fonction HAL_GPIO_ReadPin, on écrira :


Ex : uint1_t Val_GPIOE5 =0 ; on déclare la variable de nom « Val_GPIOE5 » comme étant
un entier non signé de 1 bit qui prendra la valeur initiale de « 0 ». On utilisera cette variable comme
suit :
Val_GPIOE5 = HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_5); la fonction
HAL_GPIO_ReadPin renvoie la valeur binaire présente sur l’entrée 5 du port E, l’opérateur
d’affectation « = » placera cette valeur dans la variable de nom « Val_GPIOE5 »

Par la suite, nous pourrons utiliser cette variable pour effectuer des tests et prendre des décisions
avec le programme pour commander des sorties.

V] PROGRAMMATION.

Pour chaque énoncé, vous devrez créer un nouveau projet, écrire le fichier « C » correspond et
tester le programme avec la carte de développement.

1°) Exercice 1.

Lorsque le BP Key est appuyé, la LED verte doit s’allumer, lorsque le BP n’est pas appuyé, le LED
verte doit être éteinte.

2°) Exercice 2.

Lorsque le BP Key est appuyé, la LED verte doit s’allumer 500ms puis s’éteindre 500 ms et
recommencer,
Lorsque le BP n’est pas appuyé, le LED verte doit être éteinte.

Lycée G. Eiffel Armentières Page 7 sur 8 BTS CIEL-ER-1


S

Environnement STM32
STM32 Cube IDE
SEQUENCE 4

3°) Exercice 3.

Lorsque le BP Key est appuyé, la LED verte doit s’allumer 200ms puis s’éteindre 800 ms et
recommencer,
Lorsque le BP n’est pas appuyé, le LED verte doit s’allumer 2 s et s’éteindre 3s.

Dans cet exercice, quel est le problème que vous rencontrez ?

4°) Exercice 4.

Lorsque vous appuyez, puis relâchez le BP Key, la LED doit changer d’état.

5°) Exercice 5.

Lorsque vous appuyez, puis relâchez le BP Key, la LED rouge doit changer d’état.
Lorsque vous appuyez, puis relâchez de nouveau, la LED verte doit changer d’état.
Lorsque vous appuyez, puis relâchez le BP Key, la LED orange doit changer d’état.
Lorsque vous appuyez, puis relâchez de nouveau, la LED bleue doit changer d’état.

Puis ça recommence pour chaque appui.

Lycée G. Eiffel Armentières Page 8 sur 8 BTS CIEL-ER-1

Vous aimerez peut-être aussi