LISI2 TP1 Archit Avancée Processeurs 22 23

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 14

TP1 Architecture avancée des processeurs/LISI2

/ FISE1A AU 2022/2023

TP1

Initiation à la carte
STM32F407

Plan
1- Installation de l’environnement
2- Présentation de la carte STM32F407
3- Manipulation des GPIOs

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

I- Installation de l’environnement
Dans ce TP, nous envisageons configurer la carte STM32f407VGTi-discovery-kit afin
d’explorer toute l’architecture du SoC integré. Pour cela, nous avons besoin d’un
environnement de développement complet

1- STM32CubeMX et STM32CubeF4

Cet outil permet configurer les composants de la carte ainsi que les différents paramètres (les
pins d’E/S, l’horloge….). Après la configuration, cet outil permet de générer un code C incluant
un certain nombre de fonctions de la bibliothèque HAL. Pour cette raison l’installation de
l’environnement contenant les fonctions de cette bibliothèque est indispensable. Il s’agit de
l’environnement STM32CubeF4.

Pour installer le STM32CubeMX et le STM32CubeF4, visiter la page :


https://www.st.com/content/st_com/en.html

(Pour le STM32CubeMX, installer une version supérieure à 4.15 )

Après avoir installé STM32CubeMX, ouvrir cet outil puis taper l’onglet « help » puis « manage
embedded software packages » (ou dans quelques version antérieure « install packages ») .
Appuyer sur « from local » situé en bas. Puis sélectionner le chemin dans lequel vous avez placé
le fichier de STMCubeF4_Vxxx.zip. Ceci permettra de charger le contenu de la bibliothèque
HAL dans un répertoire « repository ». Noter le chemin de ce répertoire, vous allez en servir
plus tard.

2- Keil uvision 5

Cet outil permet d’éditer le code qui va tourner sur la carte STM32. Après avoir configuré la
carte dans l’environnement graphique STM32CubeMX, il est possible d’ouvrir le code généré
par STM32CubeMX et d’y ajouter le code qui décrit le fonctionnement qui va être effectué sur
la carte Discovery f4. Par exemple dans STM32CubeMX, il est possible de définir si un port
servira d’Input ou Output, dans l’environnement Keil, il est possible de décrire les fonctions
relatives à l’utilisation de ce port (lecture, écriture, condition…).

L’installation de Keil uvision5 est effectuée à travers


https://www.st.com/content/st_com/en.html

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

Une fois installé et lancé, ouvrir le « pack installer » et sélectionner le pack de la carte
stm32f407VGTx pour l’installer comme le montre la figure suivante. Ceci permettra à l’outil
Keil de reconnaitre les composants de cette carte.

Pour vérifier si ce pack a été bien installé ou pas. Créer un nouveau projet dans Keil. Vérifier
la présence du menu « STmicroelectronics » tout comme le menu « ARM »

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

3- ST_link

Cet environnement peut être téléchargé à partir du site de


https://www.st.com/content/st_com/en.html.

Il permettra de configurer la carte STM32 et de lancer la session de débogage.

II- Présentation de la carte STM32F407


L’objectif de ce TP est de se familiariser avec la carte STM32f407 (Fig. 1) et ces périphériques.
La famille des microprocesseurs STM32f4 de ST Microelectronics fournit une vaste gamme de
périphériques autour d’un cœur ARMRCortexR-M4 32-bit. Dans ce TP, on considère la carte
STM32f407VG illustrée par la figure 1. 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.
Nous allons nous intéresser précisément, à ses entrées/sorties générales (LED, Bouton
poussoir…) et quelques fonctionnalités possibles notamment les fonctions d’interruption. Pour
y faire, nous allons exploiter certaines sections de la datasheet de la plateforme présentée (Fig.
1) afin d’acquérir le nécessaire pour mener à bien cette manipulation.

Figure 1. Aperçu général de la carte STM32

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

Ce TP vise la manipulation des étapes suivantes :


• Compiler et exécuter un programme a partir des Environnements de Développement
Intégré (IDE) STM32CubeMX et MDK (ARM V5).
• Contrôler les entrées/sorties digitales du microcontrôleur.

III- MANIPULATION :

1. Programmation de STM32F407 dans un kit d’évaluation STM32F4-Discovery pour


clignoter les LED du kit.
2. Faire clignoter des LEDs est un programme basique très élémentaire et assez simple qui
vise à la fois de découvrir l’univers de la carte STM32 et de s’assurer du bon
fonctionnement et de la bonne synchronisation entre le Software et le Hardware. Les
deux environnements de développement intégré qu’on va l’utiliser sont le
STM32CubeMX et le MDK (ARM V5).

A- STM32CubeMX
Avec la carte STM32, STMicroelectronics fournit un outil logiciel complet, réduisant
considérablement les efforts de développement, le temps et les couts.
Le STM32CubeMX est un outil graphique qui permet une configuration très simple des
microcontrôleurs et la génération du code C d'initialisation correspondante.
• Pour commencer, ouvrir le logiciel STM32CubeMX et créer un nouveau projet comme
il est illustré sur la figure suivante.

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

• Sélectionner la plateforme d’évaluation (Board) STM32F4-Discovery, et la référence


du processeur STM32F407 VGTx comme le montre la figure suivante

.
• Une fois vous avez bien sélectionné la plateforme, cliquez sur l’onglet start Project.
• Vous pouvez réinitialiser la configuration des pines du microcontrôleur en cliquant sur
l’onglet Pinout → Clear Pinouts :

• L’étape suivante consiste à configurer les pins d’entrées/sorties de la plateforme. On va


utiliser le bouton poussoi de l’utilisateur comme entrée et les 4 LED (LED 3, LED 4,
LED 5 et LED 6) comme sorties. En pratique, le bouton poussoir est lié au Pin PA0 et

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

les LED 3, 4, 5 et 6 sont liées respectivement aux Pin PD12, PD13, PD14 et PD15
(vérifier la figure 1). Vous pouvez vérifier les connexions des pines sur la figure
suivante, extraite à partir du datasheet de la plateforme.

• Dans la branche des pins, faire les configurations graphiques suivantes pour PA0, PD12,
PD13, PD14, PD15.

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

• Avec la configuration des entrées/ sorties, nous aurons besoin de sélectionner un type
d’horloge pour notre microcontrôleur, sous l’onglet RCC, sélectionner le type
Crystal/Ceramic Resonator.

A ce stade, nous avons configuré graphiquement tous les pins nécessaires de la plateforme
STM32. La dernière étape, avant de migrer vers a l’environnement de programmation Keil
MDK μ5, consiste à paramétrer les options d’intégration du projet à savoir : le nom du projet,
l’emplacement, l’outil IDE (Toolcchain/IDE) et la version de la bibliothèque utilisée (Firmware
Package). La figure suivante présente les paramètres à introduire dans l’onglet « Project
Settings ».

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

Dans la figure précédente, noter que :


• Le toolchain/IDE est MDK-ARM qui est intégré dans l’environnement Keil. (utiliser
la version 5)
• Dans le MCU Reference : vérifier qu’il s’agit bien de la carte STM32F407VGTx
• Pour le firmware package location sélectionner l’emplacement du répertoire
« repository » dans lequel se trouve l’environnement STM32CubeF4.

Il ne reste maintenant que la génération du Code C équivalent à la configuration graphique


realisée. Pour y faire, cliquer sur l’onglet Project puis Generate Code.

Apres la réussite de la génération du code par STM32CubeMX, appuyer sur « Open Project »
ceci permet d’ouvrir le code généré dans l’environnement keil uvision 5.

B- Keil MDK uvision


Keil MDK est un environnement complet de développement de logiciels pour une large gamme
de microcontrôleurs a bras Cortex-M. MDK comprend le μVision IDE et le débogueur, le
compilateur Arm C / C ++ et les composants essentiels du middleware. Il contient également
de nombreux exemples pratiques prêts à exécuter pour les cartes utilisant des processeurs ST.
Le code généré par STM32CubeMX est ouvert dans Keil. Sous le fichier Application/User
ouvrir le sous-fichier Main.c. Le code (Main.c) contient les fonctions suivantes:

- l’entête du fichier (nom du programme, la bibliothèque utilisée), exemple :


/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f4xx_hal.h"

- les fonctions de configuration équivalentes à la configuration graphique réalisée sur


STM32CubeMX , exemple

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

/* Private function prototypes -----------------------------------------------*/


void SystemClock_Config(void); /* pour la configuration du Clock
static void MX_GPIO_Init(void); /* pour la configuration des E/S GPIO

- la fonction main principale


int main(void)
{
….
….
}

- Des zones délimitées par les commentaires "/* USER CODE BEGIN ...*/" et "/* USER
CODE END...*/" allouées à l’utilisateur pour ajouter des codes personnalises.

/* USER CODE BEGIN 1 */


….
….
/* USER CODE END 1 */
Remarque
Il est très important d'ajouter votre code dans les zones delimitées par les commentaires "/*
USER CODE BEGIN ...*/" et "/* USER CODE END...*/" car si vous retournez dans cube pour
modifier la configuration du microcontrôleur, la régénération automatique du code écrasera
le code qui n'a pas été écrit dans ces zones.
• Pour faire clignoter des LEDs 12, 13, 14 et 15 de la plateforme, ajouter les deux
instructions suivantes dans la boucle while du programme principale main(void).
Attention !!!! le code ajouté doit être introduit dans la zone allouée à l’utilisateur comme le
montre la figure suivante.

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12| GPIO_PIN_13| GPIO_PIN_14|


GPIO_PIN_15);
HAL_Delay (2000) ;

• La fonction TogglePin de la bibliothèque HAL permet le clignotement de LED


(inverser l’état de la LED à chaque itération).
• L’instruction GPIOD permet la sélection du bloc D de la plateforme STM32. En effet,
la carte a 4 blocs GPIO relativement à (gauche, droite, haut et bas)
• La fonction "HAL_Delay(2000)" permet de faire une temporisation de sec (2000 ms).

Compiler le code et vérifier s’il y a des erreurs comme le montre la figure suivante.

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

C- Implémentation sur la carte


1- Brancher la carte à travers le port mini-USB
2- Vérifier que les connecteurs CN3 sont court-circuités comme le montre la figure suivante

3- Vérifier la connexion de la carte

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

4- Programmer la carte et tester le fonctionnement

5- Lancer une session de débogage et exécuter le code sur la carte en appuyant sur « run »
comme le montre la figure suivante

Bahri Nesrine / Mariem TURKI AU 2022/2023


TP1 Architecture avancée des processeurs/LISI2 AU 2022/2023

Noter que la zone A représente la traduction en assembleur du code C situé dans la zone
B. finalement la zone C représente l’état des registres internes du processeur CortexM4
situé dans la carte

6- Fermer la session de débogage et modifier le code C de telle sorte que la LED bleue du kit
s’allume lorsqu’on appuie sur le bouton User. La lumière s’éteint lorsqu’on relâche le
bouton.

Annexe
Fonction Exemple Description
void HAL_GPIO_ReadPin HAL_GPIO_ReadPin (GPIOA, Lit l’état du pin PA0
(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_0)
GPIO_Pin)
void HAL_GPIO_WritePin HAL_GPIO_WritePin(GPIOD, Cette fonction éteint
(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_12, la led 3 (la variable
GPIO_Pin, GPIO_PinState PinState) GPIO_PIN_RESET) GPIO_PIN_SET
permet de l’allumer)
void HAL_GPIO_TogglePin HAL_GPIO_TogglePin(GPIOD, Permet d’inverser
(GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN_12) l’état de la led 3
GPIO_Pin)

Bahri Nesrine / Mariem TURKI AU 2022/2023

Vous aimerez peut-être aussi