Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Enseignant du Supérieur
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

Les Timers

Back                  << Index >>


DOCUMENTATION


Qu’est ce qu’un timer ?

Un périphérique Timer est un Compteur, que l’on utilise en parallèle d’un processeur pour :


Le périphérique Timer

L’élément principal du périphérique est le compteur TIMx_CNT.
Lorsque la valeur contenue dans TIMx_CNT est égale à celle se trouvant dans TIMx_ARR, l’unité de contrôle peut :

Le Prescale Counter permet de prédiviser l’horloge à l’entrée du périphérique.


Exemple de Fonctionnement Périodique

Calcul de la Période \( T_{CNT} \) ( Période de remise à 0 du compteur principal )

On connait la fréquence de l’horloge d’entre \( F_{CKPSC} = 84MHz \)
Le Prescale Counter se remet à 0 tous les \( T_{PSC}=3.T_{CKPSC} = ( PSC+1 ).T_{CKPSC}\)
Le compteur principal TIMx_CNT se remet à 0 tous les

\( T_{CNT} = (ARR+1).(PSC+1).T_{CKPSC}\)

A.N.

\( T_{CNT}= (3+1).(2+1).\frac{1}{84.10^6}\)
\( T_{CNT}= 1.43 10^{-7}s\)


Programmation du périphérique Timer

Modèle de Programmation

Nous allons considérer la structure TIM_HandleTypeDef suivante :

stm32f4xx_hal_tim.h

TIM_TypeDef Permet d’accéder aux différents registres du TIMER :

stm32f411xe.h

TIM_Base_InitTypeDef Permet de définir les différents éléments de configuration :

stm32f4xx_hal_tim.h

Fonction de Temporisation

Nous allons configurer le timer de telle sorte qu’il se réinitialise à 0 toutes les 1 seconde.

Initialisation

La fonction HAL_TIM_Base_Init() permet de définir les registres PSC et ARR, et le mode de fonctionnement.

stm32f4xx_hal_tim.c

Dans la phase d’initialisation de la fonction main :

main.c

La variable SystemCoreClock retourne une valeur de 84e6 Hz, correspondant à \( F_{CKPSC}\)

Etant donné que \( T_{CNT} = (ARR+1).(PSC+1).T_{CKPSC}\), que peut on mettre dans ARR et PSC pour que \(T_{CNT} = 1s \) ?

ATTENTION : les registres ARR et PSC ont une taille de 16 bits.


Travaux Pratiques

PROJET SOURCE


WORKSPACE_F411_HAL_STM32CUBE


Temporisation

Q1. Compléter les fonctions suivantes :

Q2. Vérifier le bon fonctionnement du timer en faisant clignoter une led selon la valeur courante de comptage contenue dans CNT.

Q3. Proposer des valeurs pour PSC et ARR afin que le compteur principal s’incrémente toutes les 100µs, et que la fin de comptage ait lieu toutes les 500ms.

REMARQUE : Dès lors que le processeur est constamment occupé à surveiller le contenu d’un registre, nous avons ici en fonctionnement en scrutation.


Back                  << Index >>