#ifndef TIMER_H #define TIMER_H #include "stm32f103xb.h" /**************************************************************************** * 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); int PWMi_getDutyCycle(TIM_TypeDef * timer, int channel); /**************************************************************************** * PWM OUTPUT ***************************************************************************/ void PWMo_conf(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle); /** * @brief Arrêt le timer considéré * @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 PWMo_setDutyCycle(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle); /**************************************************************************** * ENCODER ***************************************************************************/ void Timer_encoder_conf(TIM_TypeDef * timer, int arr, int psc); int Timer_encoder_get(TIM_TypeDef * timer); #endif