Back | << | Index | >> |
Un périphérique Timer est un Compteur, que l’on utilise en parallèle d’un processeur pour :
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.
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\)
Nous allons considérer la structure TIM_HandleTypeDef suivante :
TIM_TypeDef Permet d’accéder aux différents registres du TIMER :
TIM_Base_InitTypeDef Permet de définir les différents éléments de configuration :
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.
Dans la phase d’initialisation de la fonction main :
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.
PROJET SOURCE
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 | >> |