123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- // A COMPLETER
-
- /*
- Service permettant de chornométrer jusqu'à 59mn 59s 99 1/100
- Utilise un timer au choix (TIMER1 à TIMER4).
- Utilise la lib MyTimers.h /.c
- */
-
-
-
- #include "Chrono.h"
- #include "Timer.h"
-
- // variable privée de type Time qui mémorise la durée mesurée
- static Time Chrono_Time; // rem : static rend la visibilité de la variable Chrono_Time limitée à ce fichier
-
- // variable privée qui mémorise pour le module le timer utilisé par le module
- static TIM_TypeDef * Chrono_Timer=TIM1; // init par défaut au cas où l'utilisateur ne lance pas Chrono_Conf avant toute autre fct.
-
- // déclaration callback appelé toute les 10ms
- void Chrono_Task_10ms(void);
-
- /**
- * @brief Configure le chronomètre.
- * @note A lancer avant toute autre fonction.
- * @param Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4
- * @retval None
- */
- void Chrono_Conf(TIM_TypeDef * Timer)
- {
- // Reset Time
- Chrono_Time.Hund = 0;
- Chrono_Time.Sec = 0;
- Chrono_Time.Min = 0;
-
- // Fixation du Timer
- Chrono_Timer = Timer;
-
- // Réglage Timer pour un débordement à 10ms
- Timer_conf(Chrono_Timer, 999, 719);
-
- // Réglage des interruptions
- Timer_IT_conf(Chrono_Timer, Chrono_Task_10ms, 3);
- Timer_IT_enable(Chrono_Timer);
- }
-
-
- /**
- * @brief Démarre le chronomètre.
- * @note si la durée dépasse 59mn 59sec 99 Hund, elle est remise à zéro et repart
- * @param Aucun
- * @retval Aucun
- */
- void Chrono_Start(void)
- {
- Timer_start(Chrono_Timer);
- }
-
-
- /**
- * @brief Arrête le chronomètre.
- * @note
- * @param Aucun
- * @retval Aucun
- */
- void Chrono_Stop(void)
- {
- Timer_stop(Chrono_Timer);
- }
-
-
- /**
- * @brief Remet le chronomètre à 0
- * @note
- * @param Aucun
- * @retval Aucun
- */
- void Chrono_Reset(void)
- {
- // Arrêt Chrono
- Timer_stop(Chrono_Timer);
-
- // Reset Time
- Chrono_Time.Hund=0;
- Chrono_Time.Sec=0;
- Chrono_Time.Min=0;
- }
-
-
- /**
- * @brief Renvoie l'adresse de la variable Time privée gérée dans le module Chrono.c
- * @note
- * @param Aucun
- * @retval adresse de la variable Time
- */
- Time * Chrono_Read(void)
- {
- return &Chrono_Time;
- }
-
-
-
-
- /**
- * @brief incrémente la variable privée Chron_Time modulo 60mn
- * @note
- * @param Aucun
- * @retval Aucun
- */
- void Chrono_Task_10ms(void)
- {
- Chrono_Time.Hund++;
- if (Chrono_Time.Hund==100)
- {
- Chrono_Time.Sec++;
- Chrono_Time.Hund=0;
- }
- if (Chrono_Time.Sec==60)
- {
- Chrono_Time.Min++;
- Chrono_Time.Sec=0;
- }
- if (Chrono_Time.Min==60)
- {
- Chrono_Time.Hund=0;
- }
-
- }
|