123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- #ifndef TIMER_H
- #define TIMER_H
-
- #include "stm32f103xb.h"
- #include "stm32f1xx_ll_tim.h" // Pour les timers
-
- enum CounterDirection {
- CLOCKWISE = LL_TIM_COUNTERDIRECTION_UP,
- COUNTER_CLOCKWISE = LL_TIM_COUNTERDIRECTION_DOWN,
- };
-
-
- /****************************************************************************
- * INTERRUPTIONS
- ***************************************************************************/
-
- /**
- * @brief Autorise les interruptions
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser par le chronom�tre, TIM1, TIM2, TIM3 ou TIM4
- * @retval None
- */
- void Timer_IT_enable(TIM_TypeDef * timer);
-
- /**
- * @brief Interdit les interruptions
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser par le chronom�tre, TIM1, TIM2, TIM3 ou TIM4
- * @retval None
- */
- void Timer_IT_disable(TIM_TypeDef * timer);
-
- /**
- * @brief Configure le Timer consid�r� en interruption sur d�bordement.
- * @note A ce stade, les interruptions ne sont pas valid�s (voir MyTimer_IT_Enable )
- * @param TIM_TypeDef Timer : indique le timer � utiliser par le chronom�tre, TIM1, TIM2, TIM3 ou TIM4
- * void (*IT_function) (void) : nom (adresse) de la fonction � lancer sur interruption
- * int Prio : priorit� associ�e � l'interruption
- * @retval None
- */
- void Timer_IT_conf(TIM_TypeDef * timer, void (*it_callback) (void), int prio);
-
-
- /****************************************************************************
- * TIMER
- ***************************************************************************/
-
- /**
- * @brief Démarre le timer considéré
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser par le chronom�tre, TIM1, TIM2, TIM3 ou TIM4
- * @retval None
- */
- void Timer_start(TIM_TypeDef * timer);
-
- /**
- * @brief Arrête le timer considéré
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser par le chronom�tre, TIM1, TIM2, TIM3 ou TIM4
- * @retval None
- */
- void Timer_stop(TIM_TypeDef * timer);
-
- /**
- * @brief Active l'horloge et regle l'ARR et le PSC du timer visé
- * @param TIM_TypeDef Timer : indique le timer à utiliser
- * int Arr : valeur à placer dans ARR
- * int Psc : valeur à placer dans PSC
- * @retval None
- */
- void Timer_conf(TIM_TypeDef * timer, int arr, int psc);
-
-
- /****************************************************************************
- * PWM INPUT
- ***************************************************************************/
-
- /**
- * @brief Configure le timer en mode PWM input
- * @note
- * @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
- * int channel : Le channel utilisé par la PWM (pas LL)
- * @retval None
- */
- void Timer_pwmi_conf(TIM_TypeDef * timer, int channel);
-
- /**
- * @brief Récupère le duty cycle de la PWM donnée
- * @note
- * @param TIM_TypeDef Timer : indique le timer à utiliser
- * @retval None
- */
- float Timer_pwmi_getDutyCycle(TIM_TypeDef * timer);
-
- /**
- * @brief Récupère la période de la PWM donnée
- * @note
- * @param TIM_TypeDef Timer : indique le timer à utiliser
- * @retval None
- */
- int Timer_pwmi_getPeriod(TIM_TypeDef * timer);
-
- /****************************************************************************
- * PWM OUTPUT
- ***************************************************************************/
-
- /**
- * @brief Configure le timer en mode PWM output � la fr�quence donn�e
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
- * int channel : Le channel utilis� par la PWM
- * float freq : Fr�quence en Hz (entre 2Hz et pas trop grand svp)
- * float dutyCycle : Valeur entre 0 et 1
- * @retval None
- */
- 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�
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
- * float freq : Fr�quence en Hz (entre 2Hz et pas trop grand svp)
- * @retval None
- */
- void Timer_pwmo_setFreq(TIM_TypeDef * timer, float freq);
-
- /**
- * @brief Modifie le duty cycle de la PWM
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
- * int channel : Le channel utilis� par la PWM
- * float dutyCycle : Valeur entre 0 et 1
- * @retval None
- */
- void Timer_pwmo_setDutyCycle(TIM_TypeDef * timer, int channel, float dutyCycle);
-
- /**
- * @brief R�cup�re le duty cycle de la PWM
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
- * int channel : Le channel utilis� par la PWM
- * @retval float dutyCycle
- */
- float Timer_pwmo_getDutyCycle(TIM_TypeDef * timer, int channel);
-
- /****************************************************************************
- * ENCODER
- ***************************************************************************/
-
- /**
- * @brief Configure le timer en mode encoder
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
- * @retval None
- */
- void Timer_encoder_conf(TIM_TypeDef * timer);
-
- /**
- * @brief R�cup�re l'angle, en degr�s
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
- * @retval None
- */
- int Timer_encoder_getAngle(TIM_TypeDef * timer);
-
- /**
- * @brief R�cup�re la direction
- * @note
- * @param TIM_TypeDef Timer : indique le timer � utiliser : TIM1, TIM2, TIM3 ou TIM4
- * @retval None
- */
- enum CounterDirection Timer_encoder_getDirection(TIM_TypeDef * timer);
-
- #endif
|