add incremental encoder functions

This commit is contained in:
Arnaud Vergnet 2020-11-06 10:10:34 +01:00
parent 96a831ae9e
commit 30a898b7cc
4 changed files with 71 additions and 3 deletions

View file

@ -237,7 +237,11 @@ int Timer_encoder_getAngle(TIM_TypeDef * timer)
return LL_TIM_GetCounter(timer);
}
int Timer_encoder_getDirection(TIM_TypeDef * timer)
enum CounterDirection Timer_encoder_getDirection(TIM_TypeDef * timer)
{
return LL_TIM_GetDirection(timer);
const int dir = LL_TIM_GetDirection(timer);
if (dir == LL_TIM_COUNTERDIRECTION_UP)
return CLOCKWISE;
else
return COUNTER_CLOCKWISE;
}

View file

@ -2,6 +2,13 @@
#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
@ -125,6 +132,6 @@ int Timer_encoder_getAngle(TIM_TypeDef * timer);
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
* @retval None
*/
int Timer_encoder_getDirection(TIM_TypeDef * timer);
enum CounterDirection Timer_encoder_getDirection(TIM_TypeDef * timer);
#endif

View file

@ -1 +1,24 @@
#include "IncrementalEncoder.h"
#include "Timer.h"
void IncrementalEncoder_conf(TIM_TypeDef * timer)
{
Timer_encoder_conf(timer);
// TODO GPIO config
}
void IncrementalEncoder_start(TIM_TypeDef * timer)
{
Timer_start(timer);
}
int IncrementalEncoder_getAngle(TIM_TypeDef * timer)
{
return Timer_encoder_getAngle(timer);
}
enum CounterDirection IncrementalEncoder_getDirection(TIM_TypeDef * timer)
{
return Timer_encoder_getDirection(timer);
}

View file

@ -1,4 +1,38 @@
#ifndef INC_ENCODER_H
#define INC_ENCODER_H
#include "stm32f103xb.h"
/**
* @brief Configure le codeur incrémental associé au timer donné
* @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
* @retval None
*/
void IncrementalEncoder_conf(TIM_TypeDef * timer);
/**
* @brief Démarre le codeur incrémental associé au timer donné
* @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
* @retval None
*/
void IncrementalEncoder_start(TIM_TypeDef * timer);
/**
* @brief Récupère l'angle du codeur incrémental associé au timer donné
* @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
* @retval int angle
*/
int IncrementalEncoder_getAngle(TIM_TypeDef * timer);
/**
* @brief Récupère la direction du codeur incrémental associé au timer donné
* @note
* @param TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
* @retval int dir
*/
enum CounterDirection IncrementalEncoder_getDirection(TIM_TypeDef * timer);
#endif