0% ont trouvé ce document utile (0 vote)
215 vues11 pages

Interruption et Gestion des GPIO en TP

Ce document décrit le fonctionnement des interruptions sur un microcontrôleur STM32. Il explique la gestion des interruptions par le processeur et le contrôleur d'interruptions NVIC, ainsi que le traitement d'une interruption externe provenant d'un bouton poussoir. Le document contient également des réponses détaillées à des questions sur la configuration d'une interruption.

Transféré par

Nesrine Berrahmoune
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)
215 vues11 pages

Interruption et Gestion des GPIO en TP

Ce document décrit le fonctionnement des interruptions sur un microcontrôleur STM32. Il explique la gestion des interruptions par le processeur et le contrôleur d'interruptions NVIC, ainsi que le traitement d'une interruption externe provenant d'un bouton poussoir. Le document contient également des réponses détaillées à des questions sur la configuration d'une interruption.

Transféré par

Nesrine Berrahmoune
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

2ème année second Cycle Ingénieur GEII

Système embarqué

Capteurs & SAD

TP N° 01 :
Entrées/Sorties en mode interruption

Réaliser par :

BERRAHMOUNE Nesrine

Boudali Khadidja
Définition d’une interruption
Une interruption est un événement interne ou externe qui va de manière
chronologique :
1. Arrêter le fonctionnement en cours du programme.
2. Sauvegarder le contexte d’exécution : état du programme en cours
d’instruction (registres et compteur ordinal – program counter)
3. Exécuter une suite d’instruction pour servir l’interruption : routine de
service d’interruption – programme spécifique à l’interruption
4. Restaurer le contexte précédent d’exécution
5. Reprendre le fonctionnement du programme
Classifications des interruptions
Interruptions internes : exceptions
 Propres à l’exécution d’un processus
 Concernent des appels systèmes
 Erreurs d’exécution
Interruptions externes : interruptions
 Commandée par les périphériques
 Asynchrone / aux instructions en cours
Le déroulement d une interruption
Le traitement d’une interruption par le Cortex M4 comporte trois phases
Le processeur possède deux opératoires
- Thread mode – traitement normal par l
utilisateur (Process SP)
- Handler mode – traitement des exceptions
/interruptions (MSP)

Contrôleur NVIC – Nested Vectored Interrupt Controller


NVIC supporte une interruption non masquable
 Le NVIC permet de contrôler 82 sources d’interruptions provenant des
périphériques
 Le NVIC interrompt le CPU avec l’IRQ de plus haute priorité •
 Le CPU utilise le numéro d’IRQ pour accéder à la routine d’interruption via
son adresse en mémoire
Les registres du NVIC

 NVIC_ISERx/NVIC_ICERx – Interrupt Set/Clear Enable Register


 NVIC_ISPRx/NVIC_ICPRx – Interrupt Set/Clear Pending Register
 NVIC_IABRx – Interrupt Active Bit Register
Gestion des interruptions externe au niveau architecture

 EXTI proviennent généralement de


lignes externes – connectées à un
GPIO
 23 détecteurs de front pour
synchroniser les évènements et les
interruption délivrés par 240 broches
de GPIO et 7 évènements internes

 Multiplexeurs sélectionnent les GPIO comme des lignes


d’interruptions externes EXTI0 à EXTI15
 Les entrées des multiplexeurs sont sélectionnées via 4 bits dans le
registre EXTICR[k]
• EXTIx = 0 pour Pax, 1 pour PBx, 2 pour PCx, etc…
• EXTICR[0] pour EXTI3-EXTI0; EXTICR[1] pour EXTI7-EXTI4,
etc…
Les sources sont :
16 interruptions externes
• EXTI0 à EXTI15
7 événements
• EXTI16 = PVD output
• EXTI17 = RTC Alarm Event
• EXTI18 = USB OTG FS Wakeup event
• EXTI19 = Ethernet Wakeup event
• EXTI20 USB OTG HS Wakeup event
• EXTI21 = RTC Tamper and TimeStamp events
• EXTI22 = RTC Wakeup event

Les principaux registres EXTI


EXTI_IMR – interrupt mask register
EXTI_RTSR/FTSR – rising / falling register
EXTI_PR – interrupt / event pending register
Chemin d’une interruption externe

Traitement des interruptions externes sur GPIO


Dans Ce TP on a utilisé le bouton
poussoir en mode « interrupt »
Creation de projet

- Créer un nouveau projet dans


STM32CubeMX
- Sélectionner la carte Nucleo
STM32F446RE
Configuration du Pinout

- GPIO_EXTI13 sur le PC13


- GPIO_Output sur PA5
Configuration du NVIC

Configuration du GPIO
Génération du code
Création d une variable ButtonPressed initialise à l’état 0

Réalisation d une fonction qui value la valeur de la variable booléenne


ButtonPressed en fonction de l'état du bouton poussoir.

On ajoute la boucle while (1) a fin de régir l’état de la LED selon l'action sur le
bouton poussoir.
Réponses aux questions
Partie 1

1. Le fichier 'startup.s' est un fichier d'assemblage utilisé dans presque tous les
projets C intégrés avec l'IDE Keil uVision.
C'est là que l'utilisateur définira les éléments obligatoires, sans lesquels aucun
programme C écrit par l'utilisateur ne sera
compilé.
Il doit
1. Déclarez un pointeur de pile
2. Déclarez une routine Reset_Handler.
3. Définir un minimum de 'Vecteurs''

2. La taille de la pile

On appelle vecteur d’une interruption


l’adresse à laquelle démarre le code (ou la
routine) de cette interruption.
-Elle est définie sur 32 bits
3. l’adresse 0x00 continu la valeur initial de MSP

4. l’action lors du RESET par le


RESET_Handler
1. Première entrée 0x00 contient la
valeur initiale du MSP (Main
Stack Pointeur)
2. Lance la routine depuis l’adresse
0x04 (handler reset)
3. Execution de la routine en mode
Thread
4. Execution du programme principale
Partie 2 :
1. Le fichier stm32f0xx_hal_msp.c contient l'initialisation et la
désinitialisation MSP (routine principale et rappels) du périphérique
utilisé dans l'application utilisateur. Il peut être généré automatiquement
par l'outil STM32CubeMX et modifié ultérieurement.
2. Le fichier stm32f0xx_t.c contient le gestionnaire d'exceptions et la
routine de service d'interruption des périphériques, et appelle
HAL_IncTick() à intervalles réguliers pour incrémenter une variable
locale (déclarée dans stm32f4xx_hal.c) et utilisé comme base de temps
HAL. Par défaut, cette fonction est appelée toutes les 1ms dans Systick
3. le fichier stm32f446xx.h contient tous les composants du
microcontrôleur et leur adresses

4.

Memory map of STM32F446RE


Partie 3

Address of the Flash memory (usable) :


Start Address : 0x08000000
End Address : 0x08080000
Address of the RAM (usable) :
Start Address : 0x20000000
End Address : 0x20020000
Address of Internal Peripherals :
Start Address : 0xE000 0000
End Address : 0xE00F FFFF
R30 : pull-up resistor
R29 : pull-down resistor
C15 : lorsque B1 est poussé, il envoie plusieurs signaux à la fois, les circuits
numériques réagissent à chacun d'eux

Vous aimerez peut-être aussi