Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

Les Timers

Back                  << Index >>

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 :

stm32f4xx_hal_tim.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.

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 >>