Introduction aux Microcontrôleurs STM32
Table des matières
1. Introduction aux microcontrôleurs STM32
2. Architecture et familles des STM32
3. Configuration matérielle et outils de développement
4. Programmation des GPIOs avec HAL
5. Utilisation des Timers
6. Communication (UART, I2C, SPI)
7. Conversion analogique-numérique (ADC)
8. Projets pratiques avec STM32
9. Dépannage et astuces avancées
10. Conclusion et ressources supplémentaires
1. Introduction aux Microcontrôleurs STM32
Les microcontrôleurs STM32, développés par STMicroelectronics, sont basés sur les cœurs
ARM Cortex-M et offrent des performances élevées, une faible consommation d'énergie et
une grande variété de périphériques intégrés. Ils sont utilisés dans une large gamme
d'applications, notamment l'Internet des Objets (IoT), l'automatisation industrielle, et les
dispositifs embarqués.
2. Architecture et Familles des STM32
Familles STM32 :
o STM32F0 : Pour les applications basiques, faible coût.
o STM32F1 : La série classique avec un bon compromis entre performance et
coût.
o STM32F4 : Haute performance, utile pour les applications exigeantes.
o STM32H7 : Les plus rapides avec double cœur ARM Cortex-M7 et Cortex-
M4.
o STM32L : Faible consommation d’énergie pour les applications sur batterie.
Architecture commune :
o ARM Cortex-M : Processeur 32 bits avec instructions optimisées pour les
systèmes embarqués.
o Périphériques intégrés : GPIOs, Timers, ADC, DAC, UART, SPI, I2C, etc.
o Mémoire : SRAM, Flash interne, et parfois QSPI externe.
3. Configuration Matérielle et Outils de Développement
Cartes de développement populaires :
o Nucleo Boards
o Discovery Boards
o Custom boards (basées sur des STM32).
Outils logiciels :
o STM32CubeMX : Génération de code et configuration graphique des
périphériques.
o STM32CubeIDE : Environnement de développement intégré (IDE) basé sur
Eclipse.
o Outils tiers : Keil µVision, IAR Embedded Workbench, PlatformIO.
4. Programmation des GPIOs avec HAL
Les GPIO (General Purpose Input/Output) sont utilisés pour contrôler les broches d'entrée et
de sortie des STM32.
Exemple : Faire clignoter une LED
Configuration dans STM32CubeMX :
1. Sélectionnez la broche GPIO (ex. PA5 pour une LED sur une Nucleo
F401RE).
2. Configurez-la en "Output Push Pull".
Code généré et modifié dans STM32CubeIDE :
c
Copier le code
// Dans le fichier main.c
#include "main.h"
int main(void) {
HAL_Init(); // Initialiser la bibliothèque HAL
SystemClock_Config(); // Configurer l'horloge
MX_GPIO_Init(); // Initialiser les GPIO
while (1) {
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // Allumer/éteindre la
LED
HAL_Delay(500); // Pause de 500 ms
}
}
5. Utilisation des Timers
Les Timers sont utilisés pour des tâches précises comme :
Mesure de durée.
Génération de signaux PWM pour contrôler des moteurs.
Exemple : PWM pour contrôler un servo-moteur
1. Configurez un Timer (par ex. TIM2) en mode PWM via STM32CubeMX.
2. Code dans STM32CubeIDE pour ajuster le rapport cyclique.
6. Communication (UART, I2C, SPI)
Les STM32 supportent plusieurs protocoles de communication.
Exemple : Communication UART :
c
Copier le code
uint8_t data[] = "Hello, UART!\r\n";
HAL_UART_Transmit(&huart2, data, sizeof(data), HAL_MAX_DELAY);
Exemple : Lecture d'un capteur via I2C.
7. Conversion Analogique-Numérique (ADC)
Les STM32 possèdent des ADC intégrés pour lire des signaux analogiques (capteurs de
température, potentiomètres, etc.).
Exemple : Lire un capteur de température (LM35)
1. Configurez l'ADC sur une broche (ex. PA0).
2. Code :
c
Copier le code
uint32_t adc_value = HAL_ADC_GetValue(&hadc1);
float temperature = (adc_value / 4095.0) * 3.3 * 100;
8. Projets Pratiques avec STM32
Projet 1 : Station météo
Capteurs : DHT11 (humidité), BMP280 (pression).
Interface : Écran OLED via I2C.
Projet 2 : Contrôle de moteur via Bluetooth
Module Bluetooth HC-05.
Contrôle moteur avec pont H (L298N).
9. Dépannage et Astuces Avancées
Débogage avec ST-Link : Mettre des points d'arrêt et surveiller les variables.
Problèmes courants :
o Configuration incorrecte de l'horloge.
o Problèmes de broches mal configurées.
10. Conclusion et Ressources Supplémentaires
Les microcontrôleurs STM32 offrent une flexibilité énorme pour les projets embarqués. Avec
leurs outils de développement, ils conviennent aux débutants comme aux experts.
Ressources :
Documentation officielle STM32
Tutoriels vidéo : chaînes YouTube comme "Controllerstech".
Livres recommandés : Mastering STM32 par Carmine Noviello.