05/04/2025
Architecture SoC
Chapitre 3:
Timers
Systèmes Embarqués & IoT
Architecture SoC ICE 3 2024/2025
1
Introduction aux périphériques Timer/ counter
Événements Valeur de rechargement
Recharg
er
ou alors Préréglable PWM
Compteur binaire
÷ 2 ou RS
L'horloge
Interrompre
Compte actuel
• Périphérique commun pour les microcontrôleurs
• Basé sur préréglable compteur binaire, amélioré avec la configurabilité
• La valeur de comptage peut être lue et écrite par MCU
• Compter direction peut souvent être réglé sur haut ou bas
• Compteur source d'horloge peut être sélectionné
• Mode compteur: compter impulsions qui indiquent événements (par
exemple impulsions du compteur kilométrique)
• Mode minuterie: la source d'horloge est périodique, donc la valeur du
compteur est proportionnelle à temps écoulé (par exemple,
chronomètre)
• Compteur action de débordement / sous-débordement peut être sélectionné
• Générer une interruption
• Recharger le compteur avec une valeur spéciale et continuer à compter
• Basculer le signal de sortie matériel
• Arrêter!
2
1
05/04/2025
Périphériques Timers STM32F4
• Advanced Control Timer
• TIM1 et TIM8
• Capture d'entrée, comparaison de sortie, PWM, un mode d'impulsion
• Registre de rechargement automatique 16 bits
• Commande supplémentaire pour le moteur d'entraînement ou d'autres appareils
• General Purpose Timer
• TIM2 à TIM5
• Capture d'entrée, comparaison de sortie, PWM, un mode d'impulsion
• Registre de rechargement automatique 16 bits ou 32 bits
• General Purpose Timer
• TIM9 à TIM14
• Capture d'entrée, comparaison de sortie, PWM, un mode d'impulsion
• Uniquement registre de rechargement automatique 16 bits
• Basic Timer (Simple timer)
• TIM6 et TIM7
• Peut être un compteur générique et connecté en interne au DAC
• Registre de rechargement automatique 16 bits
• Également une minuterie système 24 bits (SysTick)
3
General Purpose Timer Block Diagram
2
05/04/2025
Timer à usage général
Valeur de rechargement
TIMx_ARR
Recharg
er
L'horloge
TIMx_PSC TIMx_CNT ISR Reprendre
Interrompre
Compte actuel
• Timer peut compter vers le haut ou vers le haut / bas (vers le haut par réinitialisation)
• Un prescaler peut diviser l'horloge du compteur
• 4 canaux indépendants
• Capture d'entrée
• Comparaison de sortie
• Génération PWM
• Sortie en mode à une impulsion
• Un débordement ou un dépassement inférieur entraînera un événement de mise à jour
(UEV), donc l'interruption et éventuellement le rechargement
Registres de contrôle de minuterie à usage général
• Hautement configurable
3
05/04/2025
Interruption périodique
Timer comme source d'interruption périodique
Valeur de rechargement
TIMx_ARR
Recharg
er
L'horloge
TIMx_PSC TIMx_CNT ISR Reprendre
Interrompre
Compte actuel
• Les familles STM32F4 bénéficient d’un Timer sophistiquée et puissante
• L'une des fonctions de base de Timer est de provoquer des interruptions
indépendantes et périodiques
• Idéal pour répéter régulièrement certaines petites tâches
4
05/04/2025
Registres de contrôle de Timer à usage général
• Hautement configurable
• Seuls quelques-uns doivent être configurés pour configuration d'interruption périodique
Sélection de l'horloge de Timer à usage général
• Il y a 4 sources d'horloge possibles
• Horloge interne (CK_INT)
• Mode d'horloge externe1: broche d'entrée
externe (TIx)
• Mode d'horloge externe2: entrée de
déclenchement externe (ETR) (certains
minuteries uniquement)
• Entrées de déclenchement internes (ITRx)
• Accès TIMx_SMCR (Bit 2: 0 SMS) Registre de
contrôle du mode esclave pour sélectionner la
source d'horloge et le mode
• Par défaut, le prescaler pour APB1 est 4
(défini par le system_stm32f4xx.c), ce qui
signifie que le CK_INT est 42Mhz (SYSCLK est
168Mhz)
10
10
5
05/04/2025
Spécifiez PSC et ARR Valeur de rechargement
Recharg
TIMx_ARR
er
L'horloge
TIMx_PSC TIMx_CNT ISR Reprendre
Interrompre
Compte actuel
• Le registre de pré-échelle TIMx_PSC stocke la valeur qui sera utilisée pour diviser
l'entrée d'horloge.
• En mode comptage, un débordement se produira si TIMx_CNT la valeur du
compteur atteint le TIMx_ARR valeur de rechargement automatique. Et puis
leTIMx_CNT sera mis à jour avec 0.
• Tous les deux TIMx_ARR et TIMx_PSC sont des registres 16 bits!
• Ainsi, le temps périodique total peut être calculé comme
• Tout = ((ARR + 1) × (PSC + 1))÷Fclk
• Lorsque Fclk est de 42 MHz, régler ARR sur 5999 et PSC
sur 13999 donne une seconde de temps périodique.
11
11
En savoir plus sur PSC et ARR
Valeur de rechargement
TIMx_ARR
Recharg
er
L'horloge
TIMx_PSC TIMx_CNT ISR Reprendre
Interrompre
Compte actuel
• En accédant à l'ARR uniquement en écriture ou en lecture à partir d'un registre
de préchargement d'ARR, il existe un autre registre fantôme qui est le registre qui
effectue réellement le rechargement. Le contenu du registre de précharge sera
transféré au registre fantôme de façon permanente si le bit APRE dans TIMx_CR1
est libre ou à chaque UEV si le bit APRE est défini.
• Le PSC, en revanche, est toujours mis en mémoire tampon. Ce qui signifie que s'il
peut être modifié à la volée, le nouveau ratio ne sera pris en compte qu'au
prochain UEV.
12
12
6
05/04/2025
Initialisez le TIM2 avec CMSIS
• Activer l'horloge pour Minuterie2
RCC-> APB1ENR | = RCC_APB1ENR_TIM2EN;
• Réglez le rechargement automatique
TIM2-> ARR =arr;
• Ensemble les prescaler
TIM2-> PSC =psc;
• Activer l'interruption de mise à jour
TIM2-> DIER | = TIM_DIER_UIE;
• Activer compte
TIM2-> CR1 | = TIM_CR1_CEN
13
13
Gestionnaire d'interruption
• Activer l'interruption
__enable_irq();
• Nom de l'ISR CMSIS: TIM2_IRQHandler
NVIC_EnableIRQ(TIM2_IRQn);
• Activités ISR
• Effacer l'IRQ en attente
NVIC_ClearPendingIRQ(TIM2_IRQn);
• Faites le travail des ISR
• Effacer l'indicateur en attente pour le minuteur
TIM2-> SR & = ~ TIM_SR_UIF;
14
14
7
05/04/2025
SysTick comme source d'interruption
périodique
• Alternativement, nous pouvons utiliser le SysTick fourni par le noyau CortexM4 pour générer
exactement la même interruption périodique.
• La configuration de Systick est cependant beaucoup plus simple.
• Quatre registres:
• Comme cela fait partie du noyau, il est entièrement pris en charge par CMSIS
• SysTick_Config(uint32_t coche) Initialisez le Systick
• SysTick_Config(SystemCoreClock / 1000) fait 1ms
• 168 M / 1000 * (1 / f) = 1 Mme
15
15
Exemple: chronomètre
• Mesurer le temps avec une résolution de 100 US
• Affichage du temps écoulé, mise à jour de l'écran toutes les 10 ms
• Utiliser Systick
• Incrément de compteur tous les 100 us
• Mise à jour de l'écran LCD toutes les 10 ms
• Mettre à jour l'écran LCD chaque nième interruption périodique
• n = 10 ms / 100us = 100
• Ne mettez pas à jour l'écran LCD dans ISR! Trop lent.
• Au lieu de cela, définir un drapeau LCD_Update dans ISR, interrogez-le dans la
boucle principale
• Habituellement, l'ISR sert uniquement à mettre à jour la minuterie ou à retarder
(minutage précis!)
16
16
8
05/04/2025
Mode capture /
comparaison
17
17
Capturer / comparer les canaux
• Différents canaux mais mêmes blocs
• Le mode capture peut être utilisé pour mesurer la largeur ou la fréquence d'impulsion
• L'étage d'entrée comprend un filtre numérique, un multiplexage et un prescaler
• L'étage de sortie comprend un comparateur et un contrôle de sortie
• Un registre de capture (avec registre fantôme)
• Exemple d'étape d'entrée
• Signal d'entrée-> filtre-> détecteur de bord-> contrôleur de mode esclave ou commande de capture
18
18
9
05/04/2025
Capturer / comparer les canaux
• Circuit principal
• Le bloc est composé d'un registre de précharge et d'un registre fantôme.
• En mode capture, les captures sont effectuées dans le registre fantôme puis copiées dans le registre
de précharge
• En mode comparaison, le contenu du registre de précharge est copié dans le registre fantôme qui
est comparé au compteur
19
19
Capturer / comparer les canaux
• Etage de sortie
• Génère une forme d'onde intermédiaire qui est ensuite utilisée comme référence.
20
20
10
05/04/2025
Indicateur de vitesse du vent (anémomètre)
• La vitesse de rotation (et la fréquence
d'impulsion) est proportionnelle à la vitesse
du vent
• Deux options de mesure:
• Fréquence (idéale pour les vitesses élevées)
• Largeur (idéale pour les basses vitesses)
• Peut résoudre la vitesse du vent v
• Comment pouvons-nous utiliser la minuterie
pour cela?
• Utilisez le mode de capture d'entrée pour
mesurer la période du signal d'entrée
21
21
Mode de capture d'entrée pour
l'anémomètre
• Opération: Répéter
• Première capture - sur front montant
• Reconfigurer le canal pour la capture d'entrée sur front descendant
• Effacer le compteur, démarrer nouveau comptage
• Deuxième capture - sur front descendant
• Lire la valeur de capture, enregistrer pour une utilisation ultérieure dans le calcul de la vitesse du
vent
• Reconfigurer le canal pour la capture d'entrée sur front montant
• Dégager compteur, démarrer nouveau comptage
• Résolvez la vitesse du vent
• Vvent = K ÷ (Cchute - Cen hausse) ×Fréq
22
22
11
05/04/2025
Registres pour anémomètre
• TIMx_ARR (Reportez-vous à l'interruption périodique)
• TIMx_PSC (Reportez-vous à l'interruption périodique)
• TIMx_CCMR1 Registre de mode de capture / comparaison 1 (canaux 1 et 2)
• TIMx_CCMR2 (pour les canaux 3 et 4)
• TIMx_CCER Registre d'activation de capture / comparaison
• TIMx_DIER Registre d'activation DMA / interruption
• Registre de contrôle TIMx_CR1
• TIMx_CCRx Capture de registre de comparaison
• TIMx_SR Registre d'état
23
23
Registre du mode capture / comparaison 1
• [0: 7] bits sont pour le canal 1, [8:15] bits sont pour le canal 2
• Réglez CC1S (sélection de capture / comparaison 1) sur 01, configurez le
canal 1 comme entrée et mappez IC1 sur TI1 (inscriptible uniquement
lorsque le canal est désactivé)
• IC1PSC (Prescaler de capture d'entrée 1)
• IC1F (Input capture 1 filter) décide de la fréquence d'échantillonnage et
des N événements nécessaires pour valider une transition sur la sortie
• Par exemple, s'il est réglé sur 0001 et réglé pour capturer le front montant,
lorsqu'un front montant est détecté, échantillonnez le canal deux fois
avecCK_INT,s'ils sont tous les deux élevés, la capture est validée.
24
24
12
05/04/2025
Capture / Comparaison Activer le registre
• 3 bits pour chaque canal et 4 bits au total sont réservés
• CC1NP / CC1P: 00 être sensible au front montant, 01 être sensible au front
descendant, signification différente dans les autres modes
• CC1E, défini sur 1 pour activer la capture
• Doit également activer l'interruption lors de la capture
• TIMx_DIER: définir CC1IE
• Enfin, activez le comptage
• Pensez également à effacer le bit en attente (écrire 0 dans TIM_SR_CC1IF)
dans l'ISR
25
25
Configurer le GPIO - AF
• Reportez-vous au manuel de l'utilisateur pour vous assurer que la
broche est capable de se connecter au TIM
• Ensuite, configurez le GPIO en mode AF, soyez prudent avec le
paramètre de traction vers le haut ou vers le bas car il doit
correspondre au paramètre de détection de bord
• Configurer le registre GPIO AF
26
26
13
05/04/2025
Mode de comparaison de sortie
• Control une forme d'onde de
sortie ou indiquant quand
une période de temps
écoulée
• Lorsqu'un match se produit
(CCRx= CNT)
• Générer une sortie
spécifique sur la broche
correspondante
• Met le CCxIFBit (état
d'interruption) dans le SR
Configurer les étapes
• Générer une interruption si
Sélectionnez l'horloge du compteur
configuré Ecrire les données souhaitées dans les
registres ARR et CCR
• Générer une requête DMA
si elle est configurée Activer l'interruption ou la demande
DMA si nécessaire
Sélectionnez le mode de sortie
Activer le compteur
27
27
PWM Mode
(Pulse Width Modulation Mode)
28
28
14
05/04/2025
Modulation de largeur d'impulsion
• Utilisations de PWM
• Amplificateurs de puissance numériques sont plus efficaces et moins chers que les
amplificateurs de puissance analogiques
• Applications: contrôle de la vitesse du moteur, variateur de lumière, mode de
commutation conversion de puissance
• La charge (moteur, lumière, etc.) répond lentement, fait la moyenne du signal
PWM
• Communication numérique est moins sensible au bruit que les méthodes
analogiques
• PWM fournit un encodage numérique d'un analogique valeur
• Beaucoup moins vulnérable au bruit
• Caractéristiques du signal PWM
• Fréquence de modulation - combien
les impulsions se produisent par seconde (fixe)
• Période - 1 / (fréquence de modulation)
• À l'heure - durée pendant laquelle chacun
l'impulsion est allumée (affirmée)
• Cycle de service - ponctualité / période
• Régler à temps (Par conséquent cycle de service) à
représente la valeur analogique
29
29
Modulation de largeur d'impulsion
• La minuterie fournit également le mode PWM, génère un signal avec une
fréquence déterminée par la valeur de ARR et un cycle de service déterminé par
le CCR.
• CCMRx_OCxM bits, 110 (mode PWM 1) 111 (mode PWM 2) (polarité différente)
• Activez le registre de précharge correspondant (OCxPE dans TIMx_CCMRx)
• Activez le rechargement automatique en définissant le bit ARPE dans TIMxCR1
• Activer la sortie Ocx dans TIMx_CCER CCxE bit
• PWM fait en comparant TIMx_CCR et TIMx_CNT, c'est-à-dire si
TIMx_CCRx≤TIMx_CNT ou alors TIMx_CNT≤TIMx_CCRx puis sortie haut ou bas.
• Peut également être configuré comme mode d'entrée, de sorte qu'il puisse
mesurer PWM externe.
30
30
15
05/04/2025
Aligné sur les bords
• Les bits du CMS dans TIMx_CR1 sont 00
• Tant que TIMx_CNT<TIMx_CCRx alors l'OCXREF est élevé
• Sélectionnez le décomptage ou le comptage croissant à l'aide du bit DIR dans TIMx_CR1
31
31
Aligné au centre
• CMS les bits de TIMx_CR1 sont pas 00: nombreuses formes d'ondes possibles
32
32
16
05/04/2025
PWM pour entraîner le servomoteur
• Signal PWM servo
• Période de 20 ms
• Largeur d'impulsion de 1 à 2 ms
33
33
Plan du cours
principe de fonctionnement
Registres de base pour la programmation du TIMER
Calculer les paramètres d’un timer
Les fonctions HAL du TIMER
Application
34
34
17
05/04/2025
Principe de Fonctionnement (1/3)
• TIMER = Compteur ou Décompteur ou les deux.
• C’est un module hardware équipé d’un contrôleur qui permet à un registre
de s’incrémenter et/ou se décrémenter à chaque cycle d’horloge
• Suivant la taille de ce registre, le Timer déborde lorsque il atteint sa valeur
maximale. Déborde, signifie que le registre contiendra 0 après avoir atteind
cette valeur maximale
35
35
Principe de Fonctionnement (2/3)
• Ce débordement est détecté par le contrôleur qui positionne un drapeau (bit
de flag) en conséquence
• Si l’interruption relative au TIMER est autorisée, un événement est généré
après chaque débordement.
• Une routine d’interruption est alors exécutée suite à cet évènement.
36
36
18
05/04/2025
Principe de Fonctionnement (3/ 3)
• Le résultat est alors le comptage des nombres des cycles écoulés entre
débordements successives.
• On peut alors calculer le temps écoulé entre évènements.
• Autres que la temporisation, certains TIMERs ont des modes plus avancés:
générations des signaux PWM, mise en cascade de plusieurs TIMERs,
fonctionnement conjoint avec d’autres périphériques (DMA, ADC …) etc.
37
37
Schéma fonctionnel
• 3 registres de base:
• Counter Register (TIMx_CNT) To DAC
• Prescaler Register (TIMx_PSC)
• Auto-Reload Register (TIMx_ARR)
• TIMx_ARR: 16-bits auto-reload up-counter : c’est un
registre qui permet de définir la valeur de
débordement. Si le contenu de ce registre est nul le
TIMER est hors fonction
• TIMx_PSC: Un diviseur de fréquence programmable:
registre de 16 bits (prescaler) qui permet de diviser
la fréquence par un facteur compris entre 1 et
65536
• Les modes avancés d’un TIMER sont:
• Synchronisation du DAC
• Commande de DMA
38
38
19
05/04/2025
Chronogramme : TIMx_ARR = 0x36.
Internal clock :
CEN =
Prescal=1,
39
39
Chronogramme, Suite …
• Le registre TIMx_ARR est pré-chargé par un registre de pré-
chargement (PRELOAD).
• PRELOAD est accédé à chaque fois qu’on lit ou écrit dans le registre
ARR
• Le TIMER doit être activé par le bit CEN de TIMx_CR1 avant l’utiliser
40
40
20
05/04/2025
Modes de comptage (1/2)
• Le registre compteur (TIMx_CNT) du TIMER compte de 0 à
ARR (TIMx_ARR), puis déborde (se remet à 0) et génère un
évènement de débordement (Counter Overflow Event)
• Un drapeau est automatiquement positionné à 1 (UIF=1),
le bit 0 de Status Register. Ce bit reste à 1, donc le
programmateur doit le remettre à 0 après chaque
débordement
41
41
Exemples de chronogrammes
Pré-diviseur = 2 et TIMx_ARR=36
42
42
21
05/04/2025
Exemples de chronogrammes
TIMx_ARR=36Horloge interne divisée par 4 (PSC=4)
43
43
Exemples de chronogrammes
TIMx_ARR=36 Horloge interne divisée par N (PSC=N)
44
44
22
05/04/2025
Plan du cours
principe de fonctionnement
Registres de base pour la programmation du TIMER
Calculer les paramètres d’un timer
Les fonctions HAL du TIMER
Application
45
45
Registres de base pour la programmation du TIMER
control register 1 (TIMx_CR1)
status register (TIMx_SR)
counter (TIMx_CNT)
prescaler (TIMx_PSC)
auto-reload register (TIMx_ARR)
46
46
23
05/04/2025
Registres de base pour la programmation du TIMER
control register 1 (TIMx_CR1)
status register (TIMx_SR)
TIM6&TIM7 control register 1 (TIMx_CR1)
counter (TIMx_CNT)
prescaler (TIMx_PSC)
auto-reload register (TIMx_ARR)
NOTE: Les bits 7, 3, 2 et 1 concernent des modes de fonctionnement
avancés des TIMERS, transfert DMA, Multi-Timers, ADC … 47
47
Registres de base pour la programmation du TIMER
control register 1 (TIMx_CR1)
status register (TIMx_SR)
counter (TIMx_CNT) TIM6&TIM7 status register (TIMx_SR)
prescaler (TIMx_PSC)
auto-reload register (TIMx_ARR)
48
48
24
05/04/2025
Registres de base pour la programmation du TIMER
control register 1 (TIMx_CR1)
status register (TIMx_SR)
counter (TIMx_CNT) TIM6&TIM7 counter (TIMx_CNT)
prescaler (TIMx_PSC)
auto-reload register (TIMx_ARR)
49
49
Registres de base pour la programmation du TIMER
control register 1 (TIMx_CR1)
status register (TIMx_SR)
counter (TIMx_CNT) TIM6&TIM7 prescaler (TIMx_PSC)
prescaler (TIMx_PSC)
auto-reload register (TIMx_ARR)
50
50
25
05/04/2025
Registres de base pour la programmation du TIMER
control register 1 (TIMx_CR1)
status register (TIMx_SR)
counter (TIMx_CNT) TIM6&TIM7 auto-reload register (TIMx_ARR)
prescaler (TIMx_PSC)
auto-reload register (TIMx_ARR)
51
51
Plan du cours
principe de fonctionnement
Registres de base pour la programmation du TIMER
Calculer les paramètres d’un timer
Les fonctions HAL du TIMER
Application
52
52
26
05/04/2025
Calculer les paramètres d’un timer
La formule pour obtenir la période à laquelle le timer déborde est
donnée par :
Supposez que vous avez une horloge à 72 Mhz, comment régler le prescaler et
l’autoreload pour obtenir un débordement du timer toutes les secondes ?
Considérons le cas où le prescaler vaut 1, nous avons alors :
ce qui serait possible pour un timer comptant sur 32 bits, mais qui devient
impossible pour un timer en 16 bits puisqu’il ne peut compter que jusqu’à 65 535.
53
53
Calculer les paramètres d’un timer
Pour configurer un timer, il faut donc connaître sa résolution et faire attention à l’amplitude
des valeurs disponibles.
Pour trouver une configuration faisable, Il faut aussi utiliser le prescaler.
Dans notre exemple, en fixant le prescaler à 7 200, nous avons
Au final, il est donc possible de configurer le prescaler à 7 200 et l’autoreload à 9 999 pour
avoir un timer qui expire toutes les secondes (dans le cas d’un compteur en 16 bits).
D’autres valeurs sont bien évidemment possibles.
54
54
27
05/04/2025
Plan du cours
principe de fonctionnement
Registres de base pour la programmation du TIMER
Calculer les paramètres d’un timer
Les fonctions HAL du TIMER
Application
55
55
les fonctions HAL du TIMER
Configuration des timers basiques
• Activer l’horloge du périphérique
__HAL_RCC_TIMx_CLK_ENABLE();
• Déclarer une handle TIM_HandleTypeDef et remplir ses champs de configuration :
Instance : le timer à utiliser (TIMx)
[Link] : sa période
[Link] : la valeur du diviseur d’horloge
[Link] : mode de comptage (up, down, ou up+down)
• Passer cette handle à HAL_TIM_Base_Init()
• Appeler une des fonctions pour activer le timer :
• HAL_TIM_Base_Start() : démarrage simple
• HAL_TIM_Base_Start_IT() : + armement de l’interruption (dans ce cas, ne pas
oublier d’activer l’IRQ dans le NVIC :
• HAL_NVIC_EnableIRQ(TIMx_IRQn))
56
56
28
05/04/2025
Les fonction HAL du TIMER
Utilisation des timers basiques
• on peut lire la valeur du registre d’un timer avec
__HAL_TIM_GET_COUNTER(&htim)
• on définit le handler d’interruption, qui passe la main au handler HAL :
void TIM3_IRQHandler() { HAL_TIM_IRQHandler(&htim3); }
•. . . qui appellera un callback que l’on peut définir : void
HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *h); quand le timer débordera
57
57
Plan du cours
principe de fonctionnement
Registres de base pour la programmation du TIMER
Calculer les paramètres d’un timer
Les fonction HAL du TIMER
Application
58
58
29
05/04/2025
Application: Timer Basique
Clignoter PD12 et PD13 tous les 500 ms. Cette temporisation est
mesurée par le TIMER 2 ?
Travail demandé
• On veut Clignoter les Leds PD12 et PD13 tous les 500 ms.
• Temporisation mesurée par le TIMER2
• Mode de TIMER est le Pooling (Scrutation sur le FLAG UIF de TIM2_SR)
59
59
Application: Timer Basique
Séquencement du programme
• Activer l’horloge des 2 périphériques: GPIOD et TIM2
• Configurer PD12 et PD13 en sorties numériques
• Configurer le prescaler (prédiviseur) par la valeur adéquate
• Initialiser le registre d’auto-Reload TIM2_ARR par la valeur adéquate
• Lancer le TIMER TIM2 en positionnant le bit CEN de TIM2_CR1
• Dans la boucle infinie, faites un test sur le bit UIF du registre TIM2_SR:
• S’il est à 0 ne rien faire, attendre. Les 500ms ne sont pas encore écoulés
• S’il est à 1, inverser les états des leds et remettre UIF à 0 pour attendre de nouveau
les 500 ms
60
60
30
05/04/2025
Application: Timer Basique
• on suppose que les timers sont branchés sur une horloge à 72 MHz
Pour trouver une configuration faisable, Il faut aussi utiliser le prescaler.
Dans notre exemple, en fixant le prescaler à 7 200, nous avons
Au final, il est donc possible de configurer le prescaler à 7 200 et l’autoreload à 9 999
pour avoir un timer qui expire toutes les secondes (dans le cas d’un compteur en 16 bits).
D’autres valeurs sont bien évidemment possibles.
61
61
31