add timer encoder functions
This commit is contained in:
parent
99c0fef486
commit
9b1fa9e113
2 changed files with 53 additions and 13 deletions
|
@ -176,7 +176,7 @@ int getArrFromFreq(float freq_khz)
|
||||||
return (72000 / freq_khz) - 1;
|
return (72000 / freq_khz) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PWMo_conf(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle)
|
void Timer_pwmo_conf(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle)
|
||||||
{
|
{
|
||||||
const int arr = getArrFromFreq(freq_khz);
|
const int arr = getArrFromFreq(freq_khz);
|
||||||
Timer_conf(timer, arr, 0);
|
Timer_conf(timer, arr, 0);
|
||||||
|
@ -190,7 +190,7 @@ void PWMo_conf(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle
|
||||||
LL_TIM_OC_Init(timer, channel, &init_struct);
|
LL_TIM_OC_Init(timer, channel, &init_struct);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PWMo_setDutyCycle(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle)
|
void Timer_pwmo_setDutyCycle(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle)
|
||||||
{
|
{
|
||||||
int compare = dutyCycle * getArrFromFreq(freq_khz);
|
int compare = dutyCycle * getArrFromFreq(freq_khz);
|
||||||
if (channel == LL_TIM_CHANNEL_CH1) LL_TIM_OC_SetCompareCH1(timer, compare);
|
if (channel == LL_TIM_CHANNEL_CH1) LL_TIM_OC_SetCompareCH1(timer, compare);
|
||||||
|
@ -203,12 +203,23 @@ void PWMo_setDutyCycle(TIM_TypeDef * timer, int channel, float freq_khz, float d
|
||||||
* ENCODER
|
* ENCODER
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
void Timer_encoder_conf(TIM_TypeDef * timer, int arr, int psc)
|
void Timer_encoder_conf(TIM_TypeDef * timer)
|
||||||
{
|
{
|
||||||
|
Timer_conf(timer, 359, 0);
|
||||||
|
LL_TIM_ENCODER_InitTypeDef init_struct;
|
||||||
|
LL_TIM_ENCODER_StructInit(&init_struct);
|
||||||
|
|
||||||
|
init_struct.EncoderMode = LL_TIM_ENCODERMODE_X2_TI1;
|
||||||
|
|
||||||
|
LL_TIM_ENCODER_Init(timer, &init_struct);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Timer_encoder_get(TIM_TypeDef * timer)
|
int Timer_encoder_getAngle(TIM_TypeDef * timer)
|
||||||
{
|
{
|
||||||
return 0;
|
return LL_TIM_GetCounter(timer);
|
||||||
|
}
|
||||||
|
|
||||||
|
int Timer_encoder_getDirection(TIM_TypeDef * timer)
|
||||||
|
{
|
||||||
|
return LL_TIM_GetDirection(timer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,24 +60,53 @@ int PWMi_getDutyCycle(TIM_TypeDef * timer, int channel);
|
||||||
* PWM OUTPUT
|
* PWM OUTPUT
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
void PWMo_conf(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Arrêt le timer considéré
|
* @brief Configure le timer en mode PWM output à la fréquence donnée
|
||||||
* @note
|
* @note
|
||||||
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
|
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
|
||||||
* int channel : Le channel utilisé par la PWM
|
* int channel : Le channel utilisé par la PWM
|
||||||
* float dutyCycle : Valeur entre 0 et 1
|
* float freq_khz : Fréquence en KHz
|
||||||
|
* float dutyCycle : Valeur entre 0 et 1
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void PWMo_setDutyCycle(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle);
|
void Timer_pwmo_conf(TIM_TypeDef * timer, int channel, float freq_khz, float dutyCycle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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 freq_khz, float dutyCycle);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* ENCODER
|
* ENCODER
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
void Timer_encoder_conf(TIM_TypeDef * timer, int arr, int psc);
|
/**
|
||||||
|
* @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);
|
||||||
|
|
||||||
int Timer_encoder_get(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
|
||||||
|
*/
|
||||||
|
int Timer_encoder_getDirection(TIM_TypeDef * timer);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue