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.

Prérequis : Connaissances de base en programmation C et familiarité avec l'architecture des microcontrôleurs STM32.

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
Architecture d'un Timer STM32

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 :

  1. Ouvrez votre projet dans STM32CubeIDE
  2. Cliquez sur le fichier .ioc pour ouvrir le configurateur graphique
  3. Dans la section "Timers", sélectionnez le timer que vous souhaitez configurer
  4. Configurez les paramètres appropriés (mode, prescaler, période, etc.)
  5. Générez le code en cliquant sur "Generate Code"
Configuration Timer dans STM32CubeIDE

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.