From 7c455e67670dc244a9ea9055295328d7f2c7508b Mon Sep 17 00:00:00 2001 From: tangweikang Date: Fri, 20 Sep 2019 15:57:26 +0800 Subject: [PATCH] [bsp][stm32][driver] drv_pulse_encoder.c --- .../libraries/HAL_Drivers/drv_pulse_encoder.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_pulse_encoder.c b/bsp/stm32/libraries/HAL_Drivers/drv_pulse_encoder.c index 432b8b2a0..ac49133ae 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_pulse_encoder.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_pulse_encoder.c @@ -87,11 +87,11 @@ rt_err_t pulse_encoder_init(struct rt_pulse_encoder_device *pulse_encoder) sConfig.EncoderMode = TIM_ENCODERMODE_TI12; sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; - sConfig.IC1Prescaler = TIM_ICPSC_DIV1; + sConfig.IC1Prescaler = TIM_ICPSC_DIV4; sConfig.IC1Filter = 3; sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; - sConfig.IC2Prescaler = TIM_ICPSC_DIV1; + sConfig.IC2Prescaler = TIM_ICPSC_DIV4; sConfig.IC2Filter = 3; if (HAL_TIM_Encoder_Init(tim_handler, &sConfig) != HAL_OK) @@ -112,6 +112,13 @@ rt_err_t pulse_encoder_init(struct rt_pulse_encoder_device *pulse_encoder) return RT_EOK; } +rt_err_t pulse_encoder_clear_count(struct rt_pulse_encoder_device *pulse_encoder) +{ + TIM_HandleTypeDef *tim_handler = (TIM_HandleTypeDef *)pulse_encoder->parent.user_data; + __HAL_TIM_SET_COUNTER(tim_handler, 0); + return RT_EOK; +} + rt_int32_t pulse_encoder_get_count(struct rt_pulse_encoder_device *pulse_encoder) { TIM_HandleTypeDef *tim_handler = (TIM_HandleTypeDef *)pulse_encoder->parent.user_data; @@ -133,9 +140,6 @@ rt_err_t pulse_encoder_control(struct rt_pulse_encoder_device *pulse_encoder, rt case PULSE_ENCODER_CMD_DISABLE: HAL_TIM_Encoder_Stop(tim_handler, TIM_CHANNEL_ALL); break; - case PULSE_ENCODER_CMD_CLEAR_COUNT: - __HAL_TIM_SET_COUNTER(tim_handler, 0); - break; default: result = -RT_ENOSYS; break; @@ -148,6 +152,7 @@ static const struct rt_pulse_encoder_ops _ops = { .init = pulse_encoder_init, .get_count = pulse_encoder_get_count, + .clear_count = pulse_encoder_clear_count, .control = pulse_encoder_control, }; -- GitLab