TD1 Sedsp
TD1 Sedsp
TD1 Sedsp
PB0 D1 D2 D3
PB1
PB2
STM32F1 PB3 D4 D5 D6
PB4
PB5
PB6 D7 D8 D9
PB7
PB8
Toutes les diodes sont commandées par des tensions délivrées par le STM32 à une fréquence de montée de 2
Mhz. Nous voulons créer un jeu de lumière prenant la forme suivante :
Nous gardons la même disposition des diodes, c-à-d qu’à l’étape 1 seules les diodes allumées sont D1, D5 et
D9; à l'étape 2 seules les diodes allumées sont D2, D5 et D8; à l'étape 3 seules les diodes D7, D5 et D3.
Le passage entre les étapes 1, 2, 3 et 4 à une bonne vitesse,
donne l’allure d’une étoile qui tourne :
La programmation de l' STM32 doit être effectuée en langage C par adressage et accès directe aux registres. Les pages
annexes 5 et 6 contiennent les informations nécessaires pour la programmation de l'STM32.
1- Déterminer les adresses de tous les registres mis en jeu pour le fonctionnement du Système ?
2- Effectuer la configuration nécessaire de l'STM32 pour le fonctionnement de ce système?
3- Créer un tableau déclaré comme variable globale, ETOILE contenant l’ensemble des valeurs à appliquer au
GPIOB pour créer le jeu de lumière.
4- Écrire le reste du programme principal permettant de créer lejeu de lumières, telque le passage entre les étapes
se fait après un delay().
On veut simuler sur STM32F' le fonctionnement de la machine à "remplir et boucher" des bouteilles présentée
par la figure suivante. Cette machine est composée de trois postes: chargement-transfert, remplissage et bouchage. Le
mapping mémoire, les registres de GPIO et registres RCC seront utilisés pour l'implémentation de ce problème (voir
annexe 1) .
1
1. Poste de chargement-transfert: composé d'un capteur CP1 et de deux vérins A et B.
Capteur CP1: capteur de présence d'une bouteille.
Vérin A, composé de:
2 capteurs (a+ et a-) de fin de course
2 signaux de commande pour le déplacement avant de vérin (VA+) et le déplacement arrière (VA-).
Vérin B, composé de:
2 capteurs (b+ et b-) de fin de course
2 signaux de commande pour le déplacement avant de vérin (VB+) et le déplacement arrière (VB-).
2. Poste de remplissage: composé d'un capteur CP2 et un vérin C et une électrovanne D.
Capteur CP2: capteur de présence d'une bouteille.
Vérin C, composé de:
2 capteurs (c+ et c-) de fin de course
2 signaux de commande pour le déplacement avant de vérin (VC+) et le déplacement arrière (VC-).
Electrovanne D, composé d‘un signal de commande D et un ressort de rappel à la détection de la position d+.
On utilisera le brochage de la figure suivante sur le STM32 pour la simulation de cette machine. Les entrées des ports
A, B et D sont Pull-UP et leurs sorties respectives sont GP OD+PU 25 Mhz. Les entrées des ports C, E et G sont Pull-
Down et leurs sorties respectives sont GP OD+PD 100 Mhz.
2
1) Ecrire en C une fonction config_machine() permettant de définir les pines d'entrées/sorties ?
2) Ecrire en C une fonction init_machine() permettant d'initialiser les sorties à 0 ?
a+ a- b+ b- CP1 CP2 CP3
g+ PG0
PG8 VG+
g- PG1
PG9 VG-
PA8 PA9 PB8 PB9 PD8 PD9
voidactiver_verin_B()
VB+ = 1 et VB- = 0
b- =1
VB+ = 0 et VB- = 1
b+ =1
VB- = 0
return
4) On veut généraliser la fonction qui active les vérins, pour cela le port sera un paramètre à la fonction. Le pseudo-
code de la fonction aura la forme suivante. Compléter le code C suivant :
3
5) L'organigramme du programme principal est le suivant. Donner le code C correspondant ?
debut
config_machine
init_machine
activer le vérin B
CP1 = 1
activer le vérin A
activer le vérin B
CP2 = 1
D=1
activer le vérin C
D=0
activer le vérin B
CP3 = 1
activer le vérin G
F=1
activer le vérin B
F=0
Fin
4
RCC AHB1-ENR
5
Mapping des Registres GPIO
6
Memory MAP and GPIO Register MAP
Registres GPIO
(GPIOx_MODER) (x = A..I)
(GPIOx_OTYPER) (x = A..I)
7
(GPIOx_OSPEEDR) (x = A..I)
(GPIOx_PUPDR) (x = A..I/)
(GPIOx_IDR) (x = A..I)
(GPIOx_ODR) (x = A..I)