Merge remote-tracking branch 'origin/MB'

This commit is contained in:
Arnaud Vergnet 2020-11-06 10:22:18 +01:00
commit be4e10b063
6 changed files with 215 additions and 164 deletions

View file

@ -1,2 +1,35 @@
#include "GPIO.h" #include "GPIO.h"
#include "stm32f1xx_ll_gpio.h"
void GPIO_conf(GPIO_TypeDef * GPIOx, uint32_t PINx, uint32_t mode, uint32_t outputType, uint32_t pullMode){
LL_GPIO_InitTypeDef init;
//Activation de l'horloge
if (GPIOx == GPIOA) LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
else if (GPIOx == GPIOB) LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB);
else if (GPIOx == GPIOC) LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC);
else if (GPIOx == GPIOD) LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOD);
//Configuration du PIN
LL_GPIO_StructInit(&init);
init.Pin = PINx;
init.Mode = mode;
//init.Speed = ;
init.OutputType = outputType;
init.Pull = pullMode;
LL_GPIO_Init(GPIOx, &init);
}
void GPIO_setPin(GPIO_TypeDef * GPIOx, uint32_t PINx, int output){
if (output) LL_GPIO_SetOutputPin(GPIOx, PINx);
else LL_GPIO_ResetOutputPin(GPIOx,PINx);
};
int GPIO_readPin(GPIO_TypeDef * GPIOx, uint32_t PINx){
return LL_GPIO_IsOutputPinSet(GPIOx, PINx);
}

View file

@ -1,4 +1,23 @@
#ifndef GPIO_H #ifndef GPIO_H
#define GPIO_H #define GPIO_H
#include "stm32f103xb.h"
#include "stm32f1xx_ll_gpio.h"
#include "stm32f1xx_ll_bus.h"
/**
* @brief Configure le GPIO considéré
* @note
* @param GPIO_TypeDef * GPIOx indique le GPIO à configurer : GPIOA, GPIOB, GPIOC ou GPIOD
uint32_t PINx indique le PIN à configurer, sous la forme LL_GPIO_PIN_x
Pour une liste des modes disponibles, consulter la librairie LL
* @retval None
*/
void GPIO_conf(GPIO_TypeDef * GPIOx, uint32_t PINx, uint32_t mode, uint32_t outputType, uint32_t pullMode);
void GPIO_setPin(GPIO_TypeDef * GPIOx, uint32_t PINx, int output);
int GPIO_readPin(GPIO_TypeDef * GPIOx, uint32_t PINx);
#endif #endif

View file

@ -4,11 +4,11 @@
/**************************************************************************** /****************************************************************************
* INTERRUPTIONS * INTERRUPTIONS
***************************************************************************/ ***************************************************************************/
// variable pointeur de fonction permettant de mémoriser le callback à appeler depuis // variable pointeur de fonction permettant de m<EFBFBD>moriser le callback <20> appeler depuis
// le handler d'IT // le handler d'IT
void (*it_callback_TIM1)(void); void (*it_callback_TIM1)(void);
void (*it_callback_TIM2)(void); void (*it_callback_TIM2)(void);
@ -47,10 +47,10 @@ void TIM4_IRQHandler(void)
/** /**
* @brief Autorise les interruptions * @brief Autorise les interruptions
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser par le chronom<EFBFBD>tre, TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
void Timer_IT_enable(TIM_TypeDef * timer) void Timer_IT_enable(TIM_TypeDef * timer)
{ {
LL_TIM_EnableIT_UPDATE(timer); LL_TIM_EnableIT_UPDATE(timer);
@ -59,23 +59,23 @@ void Timer_IT_enable(TIM_TypeDef * timer)
/** /**
* @brief Interdit les interruptions * @brief Interdit les interruptions
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser par le chronom<EFBFBD>tre, TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
void Timer_IT_disable(TIM_TypeDef * timer) void Timer_IT_disable(TIM_TypeDef * timer)
{ {
LL_TIM_DisableIT_UPDATE(timer); LL_TIM_DisableIT_UPDATE(timer);
} }
/** /**
* @brief Configure le Timer considéré en interruption sur bordement. * @brief Configure le Timer consid<EFBFBD>r<EFBFBD> en interruption sur d<EFBFBD>bordement.
* @note A ce stade, les interruptions ne sont pas validés (voir MyTimer_IT_Enable ) * @note A ce stade, les interruptions ne sont pas valid<EFBFBD>s (voir MyTimer_IT_Enable )
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser par le chronom<EFBFBD>tre, TIM1, TIM2, TIM3 ou TIM4
* void (*IT_function) (void) : nom (adresse) de la fonction à lancer sur interruption * void (*IT_function) (void) : nom (adresse) de la fonction <EFBFBD> lancer sur interruption
* int Prio : priorité associée à l'interruption * int Prio : priorit<EFBFBD> associ<EFBFBD>e <EFBFBD> l'interruption
* @retval None * @retval None
*/ */
void Timer_IT_conf(TIM_TypeDef * timer, void (*it_callback) (void), int prio) void Timer_IT_conf(TIM_TypeDef * timer, void (*it_callback) (void), int prio)
{ {
// affectation de la fonction // affectation de la fonction
@ -85,7 +85,7 @@ void Timer_IT_conf(TIM_TypeDef * timer, void (*it_callback) (void), int prio)
else it_callback_TIM4 = it_callback; else it_callback_TIM4 = it_callback;
// Blocage IT (il faudra la débloquer voir fct suivante) // Blocage IT (il faudra la d<EFBFBD>bloquer voir fct suivante)
LL_TIM_DisableIT_UPDATE(timer); LL_TIM_DisableIT_UPDATE(timer);
// validation du canal NVIC // validation du canal NVIC
@ -103,39 +103,39 @@ void Timer_IT_conf(TIM_TypeDef * timer, void (*it_callback) (void), int prio)
} }
/**************************************************************************** /****************************************************************************
* TIMER * TIMER
***************************************************************************/ ***************************************************************************/
/** /**
* @brief Démarre le timer considéré et active les interruptions * @brief D<EFBFBD>marre le timer consid<EFBFBD>r<EFBFBD> et active les interruptions
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser par le chronom<EFBFBD>tre, TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
void Timer_start(TIM_TypeDef * timer) void Timer_start(TIM_TypeDef * timer)
{ {
LL_TIM_EnableCounter(timer); LL_TIM_EnableCounter(timer);
} }
/** /**
* @brief Arrêt le timer considéré et sactive les interruptions * @brief Arr<EFBFBD>t le timer consid<EFBFBD>r<EFBFBD> et d<EFBFBD>sactive les interruptions
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser par le chronom<EFBFBD>tre, TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
void Timer_stop(TIM_TypeDef * timer) void Timer_stop(TIM_TypeDef * timer)
{ {
LL_TIM_DisableCounter(timer); LL_TIM_DisableCounter(timer);
} }
/** /**
* @brief Active l'horloge et règle l'ARR et le PSC du timer visé. * @brief Active l'horloge et r<EFBFBD>gle l'ARR et le PSC du timer vis<EFBFBD>.
* @note Fonction à lancer avant toute autre. Le timer n'est pas encore lancé (voir Timer_start) * @note Fonction <EFBFBD> lancer avant toute autre. Le timer n'est pas encore lanc<EFBFBD> (voir Timer_start)
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser par le chronom<EFBFBD>tre, TIM1, TIM2, TIM3 ou TIM4
* int Arr : valeur à placer dans ARR * int Arr : valeur <EFBFBD> placer dans ARR
* int Psc : valeur à placer dans PSC * int Psc : valeur <EFBFBD> placer dans PSC
* @retval None * @retval None
*/ */
void Timer_conf(TIM_TypeDef * timer, int arr, int psc) void Timer_conf(TIM_TypeDef * timer, int arr, int psc)
{ {
LL_TIM_InitTypeDef init_struct; LL_TIM_InitTypeDef init_struct;
@ -163,12 +163,12 @@ void Timer_conf(TIM_TypeDef * timer, int arr, int psc)
} }
/**************************************************************************** /****************************************************************************
* PWM INPUT * PWM INPUT
***************************************************************************/ ***************************************************************************/
/**************************************************************************** /****************************************************************************
* PWM OUTPUT * PWM OUTPUT
***************************************************************************/ ***************************************************************************/
int getArrFromFreq(float freq) int getArrFromFreq(float freq)
@ -218,7 +218,7 @@ float Timer_pwmo_getDutyCycle(TIM_TypeDef * timer, int channel)
} }
/**************************************************************************** /****************************************************************************
* ENCODER * ENCODER
***************************************************************************/ ***************************************************************************/
void Timer_encoder_conf(TIM_TypeDef * timer) void Timer_encoder_conf(TIM_TypeDef * timer)

View file

@ -11,7 +11,7 @@ enum CounterDirection {
/**************************************************************************** /****************************************************************************
* INTERRUPTIONS * INTERRUPTIONS
***************************************************************************/ ***************************************************************************/
void Timer_IT_enable(TIM_TypeDef * timer); void Timer_IT_enable(TIM_TypeDef * timer);
@ -22,41 +22,41 @@ void Timer_IT_conf(TIM_TypeDef * timer, void (*it_callback) (void), int prio);
/**************************************************************************** /****************************************************************************
* TIMER * TIMER
***************************************************************************/ ***************************************************************************/
/** /**
* @brief Active l'horloge et règle l'ARR et le PSC du timer visé * @brief Active l'horloge et r<EFBFBD>gle l'ARR et le PSC du timer vis<EFBFBD>
* @note Fonction à lancer avant toute autre. Le timer n'est pas encore lancé (voir MyTimerStart) * @note Fonction <EFBFBD> lancer avant toute autre. Le timer n'est pas encore lanc<EFBFBD> (voir MyTimerStart)
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser par le chronom<EFBFBD>tre, TIM1, TIM2, TIM3 ou TIM4
* int Arr : valeur à placer dans ARR * int Arr : valeur <EFBFBD> placer dans ARR
* int Psc : valeur à placer dans PSC * int Psc : valeur <EFBFBD> placer dans PSC
* @retval None * @retval None
*/ */
void Timer_conf(TIM_TypeDef * timer, int arr, int psc); void Timer_conf(TIM_TypeDef * timer, int arr, int psc);
/** /**
* @brief Démarre le timer considéré * @brief D<EFBFBD>marre le timer consid<EFBFBD>r<EFBFBD>
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser par le chronom<EFBFBD>tre, TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
void Timer_start(TIM_TypeDef * timer); void Timer_start(TIM_TypeDef * timer);
/** /**
* @brief Arrêt le timer considéré * @brief Arr<EFBFBD>t le timer consid<EFBFBD>r<EFBFBD>
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser par le chronom<EFBFBD>tre, TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
void Timer_stop(TIM_TypeDef * timer); void Timer_stop(TIM_TypeDef * timer);
/**************************************************************************** /****************************************************************************
* PWM INPUT * PWM INPUT
***************************************************************************/ ***************************************************************************/
void PWMi_conf(TIM_TypeDef * timer, int channel); void PWMi_conf(TIM_TypeDef * timer, int channel);
@ -64,25 +64,25 @@ void PWMi_conf(TIM_TypeDef * timer, int channel);
int PWMi_getDutyCycle(TIM_TypeDef * timer, int channel); int PWMi_getDutyCycle(TIM_TypeDef * timer, int channel);
/**************************************************************************** /****************************************************************************
* PWM OUTPUT * PWM OUTPUT
***************************************************************************/ ***************************************************************************/
/** /**
* @brief Configure le timer en mode PWM output à la fréquence donnée * @brief Configure le timer en mode PWM output <EFBFBD> la fr<EFBFBD>quence donn<EFBFBD>e
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser : TIM1, TIM2, TIM3 ou TIM4
* int channel : Le channel utilisé par la PWM * int channel : Le channel utilis<EFBFBD> par la PWM
* float freq : Fréquence en Hz (entre 2Hz et pas trop grand svp) * float freq : Fr<EFBFBD>quence en Hz (entre 2Hz et pas trop grand svp)
* float dutyCycle : Valeur entre 0 et 1 * float dutyCycle : Valeur entre 0 et 1
* @retval None * @retval None
*/ */
void Timer_pwmo_conf(TIM_TypeDef * timer, int channel, float freq, float dutyCycle); void Timer_pwmo_conf(TIM_TypeDef * timer, int channel, float freq, float dutyCycle);
/** /**
* @brief Modifie la fréquence des PWMs associées au timer donné * @brief Modifie la fr<EFBFBD>quence des PWMs associ<EFBFBD>es au timer donn<EFBFBD>
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser : TIM1, TIM2, TIM3 ou TIM4
* float freq : Fréquence en Hz (entre 2Hz et pas trop grand svp) * float freq : Fr<EFBFBD>quence en Hz (entre 2Hz et pas trop grand svp)
* @retval None * @retval None
*/ */
void Timer_pwmo_setFreq(TIM_TypeDef * timer, float freq); void Timer_pwmo_setFreq(TIM_TypeDef * timer, float freq);
@ -90,46 +90,46 @@ void Timer_pwmo_setFreq(TIM_TypeDef * timer, float freq);
/** /**
* @brief Modifie le duty cycle de la PWM * @brief Modifie le duty cycle de la PWM
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser : TIM1, TIM2, TIM3 ou TIM4
* int channel : Le channel utilisé par la PWM * int channel : Le channel utilis<EFBFBD> par la PWM
* float dutyCycle : Valeur entre 0 et 1 * float dutyCycle : Valeur entre 0 et 1
* @retval None * @retval None
*/ */
void Timer_pwmo_setDutyCycle(TIM_TypeDef * timer, int channel, float dutyCycle); void Timer_pwmo_setDutyCycle(TIM_TypeDef * timer, int channel, float dutyCycle);
/** /**
* @brief Récupère le duty cycle de la PWM * @brief R<EFBFBD>cup<EFBFBD>re le duty cycle de la PWM
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser : TIM1, TIM2, TIM3 ou TIM4
* int channel : Le channel utilisé par la PWM * int channel : Le channel utilis<EFBFBD> par la PWM
* @retval float dutyCycle * @retval float dutyCycle
*/ */
float Timer_pwmo_getDutyCycle(TIM_TypeDef * timer, int channel); float Timer_pwmo_getDutyCycle(TIM_TypeDef * timer, int channel);
/**************************************************************************** /****************************************************************************
* ENCODER * ENCODER
***************************************************************************/ ***************************************************************************/
/** /**
* @brief Configure le timer en mode encoder * @brief Configure le timer en mode encoder
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser : TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
void Timer_encoder_conf(TIM_TypeDef * timer); void Timer_encoder_conf(TIM_TypeDef * timer);
/** /**
* @brief Récupère l'angle, en degrès * @brief R<EFBFBD>cup<EFBFBD>re l'angle, en degr<EFBFBD>s
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser : TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
int Timer_encoder_getAngle(TIM_TypeDef * timer); int Timer_encoder_getAngle(TIM_TypeDef * timer);
/** /**
* @brief Récupère la direction * @brief R<EFBFBD>cup<EFBFBD>re la direction
* @note * @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer <EFBFBD> utiliser : TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
enum CounterDirection Timer_encoder_getDirection(TIM_TypeDef * timer); enum CounterDirection Timer_encoder_getDirection(TIM_TypeDef * timer);

View file

@ -21,110 +21,109 @@ static TIM_TypeDef * Chrono_Timer=TIM1; // init par d
void Chrono_Task_10ms(void); void Chrono_Task_10ms(void);
/** /**
* @brief Configure le chronomètre. * @brief Configure le chronomètre.
* @note A lancer avant toute autre fonction. * @note A lancer avant toute autre fonction.
* @param Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
void Chrono_Conf(TIM_TypeDef * Timer) void Chrono_Conf(TIM_TypeDef * Timer)
{ {
// Reset Time // Reset Time
Chrono_Time.Hund = 0; Chrono_Time.Hund = 0;
Chrono_Time.Sec = 0; Chrono_Time.Sec = 0;
Chrono_Time.Min = 0; Chrono_Time.Min = 0;
// Fixation du Timer
Chrono_Timer = Timer;
// Réglage Timer pour un débordement à 10ms // Fixation du Timer
Timer_conf(Chrono_Timer, 999, 719); Chrono_Timer = Timer;
// Réglage des interruptions // Réglage Timer pour un débordement à 10ms
Timer_IT_conf(Chrono_Timer, Chrono_Task_10ms, 3); Timer_conf(Chrono_Timer, 999, 719);
Timer_IT_enable(Chrono_Timer);
// Réglage des interruptions
Timer_IT_conf(Chrono_Timer, Chrono_Task_10ms, 3);
Timer_IT_enable(Chrono_Timer);
} }
/** /**
* @brief Démarre le chronomètre. * @brief Démarre le chronomètre.
* @note si la durée dépasse 59mn 59sec 99 Hund, elle est remise à zéro et repart * @note si la durée dépasse 59mn 59sec 99 Hund, elle est remise à zéro et repart
* @param Aucun * @param Aucun
* @retval Aucun * @retval Aucun
*/ */
void Chrono_Start(void) void Chrono_Start(void)
{ {
Timer_start(Chrono_Timer); Timer_start(Chrono_Timer);
} }
/** /**
* @brief Arrête le chronomètre. * @brief Arrête le chronomètre.
* @note * @note
* @param Aucun * @param Aucun
* @retval Aucun * @retval Aucun
*/ */
void Chrono_Stop(void) void Chrono_Stop(void)
{ {
Timer_stop(Chrono_Timer); Timer_stop(Chrono_Timer);
} }
/** /**
* @brief Remet le chronomètre à 0 * @brief Remet le chronomètre à 0
* @note * @note
* @param Aucun * @param Aucun
* @retval Aucun * @retval Aucun
*/ */
void Chrono_Reset(void) void Chrono_Reset(void)
{ {
// Arrêt Chrono // Arrêt Chrono
Timer_stop(Chrono_Timer); Timer_stop(Chrono_Timer);
// Reset Time // Reset Time
Chrono_Time.Hund=0; Chrono_Time.Hund=0;
Chrono_Time.Sec=0; Chrono_Time.Sec=0;
Chrono_Time.Min=0; Chrono_Time.Min=0;
} }
/** /**
* @brief Renvoie l'adresse de la variable Time privée gérée dans le module Chrono.c * @brief Renvoie l'adresse de la variable Time privée gérée dans le module Chrono.c
* @note * @note
* @param Aucun * @param Aucun
* @retval adresse de la variable Time * @retval adresse de la variable Time
*/ */
Time * Chrono_Read(void) Time * Chrono_Read(void)
{ {
return &Chrono_Time; return &Chrono_Time;
} }
/** /**
* @brief incrémente la variable privée Chron_Time modulo 60mn * @brief incrémente la variable privée Chron_Time modulo 60mn
* @note * @note
* @param Aucun * @param Aucun
* @retval Aucun * @retval Aucun
*/ */
void Chrono_Task_10ms(void) void Chrono_Task_10ms(void)
{ {
Chrono_Time.Hund++; Chrono_Time.Hund++;
if (Chrono_Time.Hund==100) if (Chrono_Time.Hund==100)
{ {
Chrono_Time.Sec++; Chrono_Time.Sec++;
Chrono_Time.Hund=0; Chrono_Time.Hund=0;
} }
if (Chrono_Time.Sec==60) if (Chrono_Time.Sec==60)
{ {
Chrono_Time.Min++; Chrono_Time.Min++;
Chrono_Time.Sec=0; Chrono_Time.Sec=0;
} }
if (Chrono_Time.Min==60) if (Chrono_Time.Min==60)
{ {
Chrono_Time.Hund=0; Chrono_Time.Hund=0;
}
} }
}

View file

@ -30,10 +30,10 @@ Les fonctions qui g
/** /**
* @brief polle les 3 entrées et gènère les actions à faire * @brief polle les 3 entrées et gènère les actions à faire
* @note Fct à lancer en tâche de fond (non bloquante) * @note Fct à lancer en tâche de fond (non bloquante)
* @param None * @param None
* @retval None * @retval None
*/ */
void Chrono_Background(void); void Chrono_Background(void);
@ -55,10 +55,10 @@ typedef struct {
/** /**
* @brief Configure le chronomètre. * @brief Configure le chronomètre.
* @note A lancer avant toute autre fonction. * @note A lancer avant toute autre fonction.
* @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4 * @param TIM_TypeDef Timer : indique le timer à utiliser par le chronomètre, TIM1, TIM2, TIM3 ou TIM4
* @retval None * @retval None
*/ */
void Chrono_Conf(TIM_TypeDef * Timer); void Chrono_Conf(TIM_TypeDef * Timer);
@ -68,37 +68,37 @@ void Chrono_Conf(TIM_TypeDef * Timer);
/** /**
* @brief Démarre le chronomètre. * @brief Démarre le chronomètre.
* @note si la durée dépasse 59mn 59sec 99 cent, elle est remise à zéro et repart * @note si la durée dépasse 59mn 59sec 99 cent, elle est remise à zéro et repart
* @param Aucun * @param Aucun
* @retval Aucun * @retval Aucun
*/ */
void Chrono_Start(void); void Chrono_Start(void);
/** /**
* @brief Arrête le chronomètre. * @brief Arrête le chronomètre.
* @note * @note
* @param Aucun * @param Aucun
* @retval Aucun * @retval Aucun
*/ */
void Chrono_Stop(void); void Chrono_Stop(void);
/** /**
* @brief Remet le chronomètre à 0 * @brief Remet le chronomètre à 0
* @note * @note
* @param Aucun * @param Aucun
* @retval Aucun * @retval Aucun
*/ */
void Chrono_Reset(void); void Chrono_Reset(void);
/** /**
* @brief Renvoie l'adresse de la variable Time privée gérée dans le module Chrono.c * @brief Renvoie l'adresse de la variable Time privée gérée dans le module Chrono.c
* @note * @note
* @param Aucun * @param Aucun
* @retval adresse de la variable Time * @retval adresse de la variable Time
*/ */
Time * Chrono_Read(void); Time * Chrono_Read(void);