Les Timers STM32 avec STM32CubeIDE
Guide complet pour comprendre et utiliser les timers des microcontrôleurs STM32
1. Introduction
Les timers sont des périphériques essentiels dans les microcontrôleurs STM32, permettant de mesurer le temps, générer des signaux PWM, déclencher des conversions ADC, et bien plus encore. Ce guide vous explique leur fonctionnement et comment les configurer avec STM32CubeIDE.
2. Types de Timers sur STM32
Les microcontrôleurs STM32 offrent plusieurs types de timers avec des fonctionnalités différentes :
Type | Caractéristiques | Applications typiques |
---|---|---|
Timers de base | Compteurs simples, auto-rechargement | Génération de délais, timebase pour systick |
Timers à usage général | Multiple canaux, génération PWM, capture d'entrée | Contrôle moteur, mesure de fréquence |
Timers avancés | Contrôle PWM complémentaire, temps mort, protection | Contrôle moteur avancé, convertisseurs d'alimentation |
Timers de contrôle | Fonction latch, encodeur quadrature | Interface avec encodeurs rotatifs, mesure de position |
3. Architecture d'un Timer STM32
Composants principaux
- Compteur (CNT) : Registre qui contient la valeur actuelle du compteur
- Prescaler (PSC) : Divise l'horloge d'entrée pour ajuster la fréquence de comptage
- Auto-reload Register (ARR) : Définit la valeur maximale du compteur
- Capture/Compare Registers (CCR) : Pour capturer des événements ou comparer avec CNT

Modes de fonctionnement
- Mode Upcount : Le compteur compte de 0 à ARR
- Mode Downcount : Le compteur compte de ARR à 0
- Mode Center-aligned : Le compteur compte de 0 à ARR puis de ARR à 0
4. Configuration des Timers avec STM32CubeIDE
Configuration par interface graphique
STM32CubeIDE offre une interface graphique intuitive pour configurer les timers :
- Ouvrez votre projet dans STM32CubeIDE
- Cliquez sur le fichier
.ioc
pour ouvrir le configurateur graphique - Dans la section "Timers", sélectionnez le timer que vous souhaitez configurer
- Configurez les paramètres appropriés (mode, prescaler, période, etc.)
- Générez le code en cliquant sur "Generate Code"

5. Calcul des Paramètres du Timer
Formules importantes
- Fréquence du timer : F_timer = F_clock / (Prescaler + 1)
- Période du timer : T_timer = (Prescaler + 1) * (ARR + 1) / F_clock
- Rapport cyclique PWM : Duty_cycle = (CCR_value / ARR) * 100%
Exemples de Configuration
Voici des exemples de configuration pour une horloge de 32 MHz et 80 MHz pour obtenir des périodes de 1 seconde et 1 microseconde :
F_clock (Hz) | Période cible | Prescaler | ARR |
---|---|---|---|
32 000 000 | 1 seconde | 31 999 | 999 |
32 000 000 | 1 microseconde | 0 | 31 |
80 000 000 | 1 seconde | 79 999 | 999 |
80 000 000 | 1 microseconde | 0 | 79 |
6. Cas d'Usage Communs
1. Timer de base pour délais précis
Configuration d'un timer pour générer des délais précis ou des interruptions périodiques :
/* Configuration du timer pour générer une interruption toutes les 1ms */
void ConfigureTimer(void) {
HAL_TIM_Base_Start_IT(&htim2);
}
/* Fonction de callback appelée lors de l'interruption du timer */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if (htim->Instance == TIM2) {
// Code à exécuter toutes les 1ms
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
}
}
7. Interruptions de Timer
Les timers STM32 peuvent générer plusieurs types d'interruptions :
- Update : Déclenché lorsque le compteur atteint sa limite ou est réinitialisé
- Capture/Compare : Déclenché lorsque le compteur atteint la valeur du registre CC
- Break : Déclenché par un signal d'arrêt d'urgence (pour les timers avancés)
- Trigger : Déclenché par un événement de déclenchement
10. Conclusion
Les timers sont des périphériques puissants et polyvalents des microcontrôleurs STM32. Ils peuvent être utilisés pour une grande variété d'applications, de la génération simple de délais à des applications complexes de contrôle moteur.
Cette page vous a présenté les concepts fondamentaux, les méthodes de configuration avec STM32CubeIDE et des exemples pratiques pour vous aider à maîtriser l'utilisation des timers STM32 dans vos projets.