projet_voilier/MyDrivers/Timer.h
2020-11-01 15:15:37 +01:00

67 lines
2 KiB
C

#ifndef TIMER_H
#define TIMER_H
#include "stm32f103xb.h"
/****************************************************************************
* 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, void (*it_callback) (void));
/**
* @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 arr, int psc);
int PWMi_getDutyCycle(TIM_TypeDef * timer);
/****************************************************************************
* PWM OUTPUT
***************************************************************************/
void PWMo_conf(TIM_TypeDef * timer, int channel, int arr, int psc);
void PWMo_setDutyCycle(TIM_TypeDef * timer, int dutyCycle);
/****************************************************************************
* ENCODER
***************************************************************************/
void Timer_encoder_conf(TIM_TypeDef * timer, int arr, int psc);
int Timer_encoder_get(TIM_TypeDef * timer);
#endif