123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #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
- ***************************************************************************/
-
- void Timer_IT_enable(TIM_TypeDef * timer);
-
- void Timer_IT_disable(TIM_TypeDef * timer);
-
- void Timer_IT_conf(TIM_TypeDef * timer, void (*it_callback) (void), int prio);
-
-
- /****************************************************************************
- * TIMER
- ***************************************************************************/
-
-
- /**
- * @brief Active l'horloge et r�gle l'ARR et le PSC du timer vis�
- * @note Fonction � lancer avant toute autre. Le timer n'est pas encore lanc� (voir MyTimerStart)
- * @param TIM_TypeDef Timer : indique le timer � utiliser par le chronom�tre, TIM1, TIM2, TIM3 ou TIM4
- * int Arr : valeur � placer dans ARR
- * int Psc : valeur � placer dans PSC
- * @retval None
- */
- void Timer_conf(TIM_TypeDef * timer, int arr, int psc);
-
-
- /**
- * @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�t 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);
-
-
- /****************************************************************************
- * PWM INPUT
- ***************************************************************************/
-
- void PWMi_conf(TIM_TypeDef * timer, int channel);
-
- float PWMi_getDutyCycle(TIM_TypeDef * timer);
-
- int PWMi_getPeriod(TIM_TypeDef * TIMx);
-
- /****************************************************************************
- * 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
|