Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Enseignant du Supérieur
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

Exercice de Synthèse

Back                  << Index >>

DOCUMENTATION


PROJET SOURCE


WORKSPACE_F411_HAL_STM32CUBE_SYNTHESE



Configuration des LEDs

Q1.1. Modifier le programme afin de permettre l’alumage et l’extinction des LEDs RGB de la carte Mbed.


Configuration des Boutons : Interruptions Externes

Q2.1. Modifier le programme afin de déclencher une interruption Externe en appuyant sur le bouton ‘center’.
La fonction de callback associée à cette interruption doit alors mettre à 1 la variable globale pushButton.


Clignotement d’une LED : configuration d’un Timer

Q3.1. Configurer le Timer 5 afin de déclencher une interruption toutes les 500ms.

Q3.2. Compléter la fonction de callback associée à cette interruption afin de faire clignoter la led Rouge.

Q3.3. Compléter la fonction void HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim) afin de stopper le comptage du timer passé en paramètre.


Configuration de l’UART

Q4.1. Configurer les broches pour utiliser UART2, et initialiser ce périphérique avec la fonction HAL_UART_Init()

Q4.2. Compléter la fonction HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) permettant d’envoyer Size caractères situés à l’adresse pData avec le périphérique huart

Q4.3. Compléter les fonctions uart_putc() et uart_puts permettant d’envoyer respectivement un caractère et une chaine de caractères se terminant par le caractère nul ( code ascii 0x00 )

Une fois ces fonctions correctement complétées, la fonction uart_printf doit être utilisable.

Q4.4. Vérifier le bon fonctionnement de la fonction uart_printf en affichant un message dans le terminal série ( avec gtkterm ou minicom ( minicom -D /dev/ttyACM0 -b 115200 )

La fonction HAL_UART_Receive_IT(UART_HandleTypeDef *huart) permet d’autoriser l’interruption liée à la réception d’un caractère pour le périphérique uart passé en paramètre.

Q4.5. Compléter la fonction HAL_UART_Receive_IT_Disable(UART_HandleTypeDef *huart) permettant de désactiver les interruptions liées à la réception d’un caractère.


Comparaison de chaines de caractères

Q5.1. Compléter la fonction stringComp(uint8_t* buf1, uint8_t* buf2), afin de retourner 1 si les caractères placés à partir de l’adresse buf1 sont identiques à ceux placés à partir de l’adresse buf2 ( et 0 sinon ).

REMARQUE : On suppose que les chaines de caractères se terminent forcément par le caractère nul ( code ascii 0 ).


Fonctionnement Global : Saisie d’un code via la liaison UART

Au démarrage ( état initial ) , la led rouge clignote toutes les 500ms.
L’appui sur le bouton central arrête ce clignotement, et authorise les interruptions en réception pour l’UART2.
Les leds RGB sont alors en jaune ( LED rouge et verte allumées ). Chaque caractère reçu est stocké dans le tableau buffer.
Une fois les 4 caractères réceptionnés :

les interruptions en réception de UART2 sont désactivées.
On attent alors 2.5 secondes, et on repart à l’état initial.

Ce fonctionnement peut être décrit par un diagramme d’états :

REMARQUE : Dans le diagramme d’états, ‘=1’ est une transition inconditionnelle, on passe à l’état suivant sans tester les entrées.
La mise à jour de l’état courant se fait toutes les 50ms.

Q6.1. Coder la machine d’état correspondante, en utilisant un switch case.


Back                  << Index >>